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" maxlength='10' />
  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 v-if="!FolderRole.levelCode || free" 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. let addBoser = ref(false)
  131. let boserForm = ref({
  132. dirName: upFolderData?upFolderData.dirName:"",
  133. dirType:upFolderData?2:1,
  134. isEncrypt:upFolderData?upFolderData.isEncrypt:"Y",
  135. encryptLevel:upFolderData?upFolderData.encryptLevel:"L1",
  136. memberRoles:upFolderData?upFolderData.dirRole.split(','):[],
  137. users:upFolderData?upFolderData.users:[]
  138. })
  139. const levelList = ref([])
  140. function inital() {
  141. console.log(free, 'free');
  142. addBoser.value = result
  143. }
  144. function backTo() {
  145. addBoser.value = false
  146. emit("getChildrenC", addBoser.value)
  147. }
  148. function addFloder() {
  149. console.log('boserForm',boserForm.value);
  150. if (boserForm.value.dirName === '') {
  151. ElMessage({
  152. type: "error",
  153. message: "目录名称不能为空"
  154. })
  155. } else {
  156. if (free === 1) {
  157. let query = {}
  158. if(boserForm.value.dirType === 2){
  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. "dirRole":boserForm.value.memberRoles.join(','),
  165. "users":boserForm.value.users,
  166. "isEncrypt":boserForm.value.isEncrypt,
  167. "encryptLevel":boserForm.value.isEncrypt == "Y"?boserForm.value.encryptLevel:null
  168. }
  169. }else{
  170. query = {
  171. "dirName": boserForm.value.dirName,
  172. "parentId": drId - 0,
  173. "spaceId": spId - 0,
  174. "dirType":thisType.dirType=='2'?'2':boserForm.value.dirType,
  175. }
  176. }
  177. documents.addDocument(
  178. query
  179. ).then(res => {
  180. if (res.code === 200) {
  181. ElMessage({
  182. message: '添加一级目录成功',
  183. type: 'success',
  184. })
  185. }
  186. addBoser.value = false
  187. emit("getChildrenC", addBoser.value)
  188. props.refreshFile()
  189. })
  190. } else {
  191. let query = {}
  192. if(FolderRole.levelCode){
  193. //父级有权限自动继承 没有就用添加的值
  194. query={
  195. "dirName": boserForm.value.dirName,
  196. "parentId": newdrid - 0,
  197. "spaceId": newspid - 0,
  198. "dirType":boserForm.value.dirType,
  199. "isEncrypt":"Y",
  200. "encryptLevel":FolderRole.levelCode
  201. }
  202. console.log('query',query);
  203. console.log('FolderRole',FolderRole);
  204. }else{
  205. query={
  206. "dirName": boserForm.value.dirName,
  207. "parentId": newdrid - 0,
  208. "spaceId": newspid - 0,
  209. "dirType":boserForm.value.dirType,
  210. "isEncrypt":boserForm.value.isEncrypt,
  211. "encryptLevel":(boserForm.value.isEncrypt == "Y" && boserForm.value.dirType == "2")?boserForm.value.encryptLevel:null
  212. }
  213. }
  214. if(thisRole.length){
  215. query.dirRole = thisRole.join(',')
  216. }else{
  217. query.dirRole = boserForm.value.memberRoles.join(',')
  218. query.users = boserForm.value.users
  219. }
  220. console.log('free0query',query);
  221. documents.addDocument(
  222. query
  223. ).then(res => {
  224. if (res.code === 200) {
  225. ElMessage({
  226. message: '添加成功',
  227. type: 'success',
  228. })
  229. }
  230. addBoser.value = false
  231. emit("getChildrenC", addBoser.value)
  232. props.refreshFile()
  233. })
  234. }
  235. }
  236. }
  237. const sureUpBoser = ()=>{
  238. if (boserForm.value.dirName === '') {
  239. ElMessage({
  240. type: "error",
  241. message: "目录名称不能为空"
  242. })
  243. return
  244. }
  245. let query ={
  246. "dirName": boserForm.value.dirName,
  247. "parentId": drId - 0,
  248. "spaceId": spId - 0,
  249. 'dirId':upFolderData.dirId,
  250. "dirType":thisType.dirType=='2'?'2':boserForm.value.dirType,
  251. "dirRole":boserForm.value.memberRoles.join(','),
  252. "users":boserForm.value.users,
  253. "isEncrypt":boserForm.value.isEncrypt,
  254. "encryptLevel":boserForm.value.isEncrypt == "Y"?boserForm.value.encryptLevel:null
  255. }
  256. console.log('query',query);
  257. documents.editFolerDocument(
  258. query
  259. ).then(res => {
  260. if (res.code === 200) {
  261. ElMessage({
  262. message: '修改目录成功',
  263. type: 'success',
  264. })
  265. }
  266. addBoser.value = false
  267. emit("getChildrenC", addBoser.value)
  268. props.refreshFile()
  269. })
  270. }
  271. const getLevelList = async ()=>{
  272. const res = await getLevel()
  273. if(res.rows){
  274. levelList.value = res.rows
  275. }
  276. // console.log(res);
  277. }
  278. const setUsers = (arr)=>{
  279. const oldArr = toRaw(arr)
  280. // boserForm.value.users = oldArr.map(item=>toRaw(item))
  281. const newArr = oldArr.map(item=>toRaw(item))
  282. boserForm.value.users = newArr.map(item=>{
  283. delete item['disabled']
  284. return item
  285. })
  286. console.log('newArr',boserForm.value.users);
  287. }
  288. const getUser =async ()=>{
  289. const res = await listUser({dirId:thisType.dirId})
  290. console.log('getUser',res);
  291. users.value = res.rows
  292. }
  293. onMounted(() => {
  294. inital()
  295. getLevelList()
  296. if(thisRole.length){
  297. getUser()
  298. }
  299. })
  300. return {
  301. addBoser,
  302. boserForm,
  303. inital,
  304. addBack: backTo,
  305. sureAddBoser: addFloder,
  306. diClose: backTo,
  307. spId,
  308. drId,
  309. newdrid,
  310. newspid,
  311. levelList,
  312. getLevelList,
  313. FolderRole,
  314. free,
  315. openTrans,
  316. setUsers,
  317. dir_rules,
  318. proxy,
  319. thisRole,
  320. thisType,
  321. getUser,
  322. users,
  323. sureUpBoser
  324. }
  325. },
  326. components: {
  327. CreateTasnsfer,
  328. },
  329. }
  330. </script>
  331. <style lang="scss" scoped></style>