CreateFloder.vue 9.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236
  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" placeholder="请输入不多于32位字符" maxlength='32' />
  8. </el-form-item>
  9. <!-- <el-form-item label="目录分类">
  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. <el-form-item label="是否加密" v-if="!(FolderRole && !free )">
  16. <el-switch v-model="boserForm.isEncrypt" active-value="Y" inactive-value="N" />
  17. </el-form-item>
  18. <el-form-item label="加密等级" v-if="!(FolderRole && !free) && boserForm.isEncrypt === 'Y'">
  19. <el-radio-group v-model="boserForm.encryptLevel">
  20. <el-radio :label="item.levelCode" v-for="item in levelList" :key="item">{{item.levelName}}</el-radio>
  21. </el-radio-group>
  22. </el-form-item>
  23. <el-form-item label="私有访问码" v-if="!(FolderRole && !free) && boserForm.isEncrypt === 'Y'&& needCode">
  24. <el-input v-model="boserForm.accessCode" type="password" show-password />
  25. </el-form-item>
  26. </el-form>
  27. <template #footer>
  28. <span class="dialog-footer">
  29. <el-button @click="addBack">取消</el-button>
  30. <el-button type="primary" @click="sureAddBoser">
  31. 确认
  32. </el-button>
  33. </span>
  34. </template>
  35. </el-dialog>
  36. </div>
  37. </div>
  38. </template>
  39. <script>
  40. import { ref, onMounted, toRef,toRaw,inject ,watch } from 'vue';
  41. import documents from '../../../api/document/document';
  42. import { getLevel } from '@/api/level/level.js';
  43. import { ElMessage } from 'element-plus';
  44. import { sm3 ,sm2} from "sm-crypto";
  45. export default {
  46. props: {
  47. folderCase: {
  48. type: Boolean,
  49. required: true
  50. },
  51. oneOrTwo: {
  52. type: Number,
  53. required: true
  54. },
  55. impDirId: {
  56. type: Number,
  57. required: true
  58. },
  59. impSpaceId: {
  60. type: Number,
  61. required: true
  62. },
  63. newDirId: {
  64. type: Number,
  65. required: true
  66. },
  67. newSpaceId: {
  68. type: Number,
  69. required: true
  70. },
  71. thisFolderRole: {
  72. type: Object,
  73. required: true,
  74. default: ()=>{},
  75. },
  76. refreshFile: Function,
  77. getFirstFolder: Function,
  78. },
  79. setup(props, { emit }) {
  80. let { addBack, sureAddBoser, diClose } = toRef(props)
  81. const upFirstFolderData = inject("upFirstFolderData");
  82. let result = props.folderCase
  83. let free = props.oneOrTwo
  84. let spId = props.impSpaceId
  85. let drId = props.impDirId
  86. let newspid = props.newSpaceId
  87. let newdrid = props.newDirId
  88. const FolderRole = props.thisFolderRole
  89. console.log("FolderRole",props);
  90. let addBoser = ref(false)
  91. let boserForm = ref({
  92. dirName: "",
  93. dirType:1,
  94. isEncrypt:"N",
  95. encryptLevel:"L1",
  96. accessCode:''
  97. })
  98. const levelList = ref([])
  99. const needCode = ref(false) // 需要私有码
  100. function inital() {
  101. console.log(free, 'free');
  102. addBoser.value = result
  103. }
  104. function backTo() {
  105. addBoser.value = false
  106. emit("getChildrenC", addBoser.value)
  107. }
  108. function addFloder() {
  109. if (boserForm.value.dirName === '') {
  110. ElMessage({
  111. type: "error",
  112. message: "目录名称不能为空"
  113. })
  114. } else {
  115. if (free === 1) { //一级目录
  116. if (boserForm.value.accessCode === '' && needCode.value) {
  117. ElMessage({
  118. type: "error",
  119. message: "私有访问码不能为空"
  120. })
  121. return
  122. }
  123. documents.addDocument(
  124. {
  125. "dirName": boserForm.value.dirName,
  126. "parentId": drId - 0,
  127. "spaceId": spId - 0,
  128. "isEncrypt":boserForm.value.isEncrypt,
  129. "encryptLevel":boserForm.value.isEncrypt == "Y"?boserForm.value.encryptLevel:null,
  130. "accessCode":boserForm.value.accessCode?sm3(boserForm.value.accessCode):''
  131. }
  132. ).then(res => {
  133. if (res.code === 200) {
  134. ElMessage({
  135. message: '添加一级目录成功',
  136. type: 'success',
  137. })
  138. }
  139. addBoser.value = false
  140. emit("getChildrenC", addBoser.value)
  141. props.getFirstFolder()
  142. })
  143. console.log('1111', 1111)
  144. } else { //二级目录
  145. let query = {}
  146. if(FolderRole){ // 如果是父级有权限就直接用父级
  147. query={
  148. "dirName": boserForm.value.dirName,
  149. "parentId": newdrid - 0,
  150. "spaceId": newspid - 0,
  151. "isEncrypt":"Y",
  152. "encryptLevel":FolderRole.levelCode,
  153. "accessCode":FolderRole.accessCode
  154. }
  155. console.log('query',query);
  156. console.log('FolderRole',FolderRole);
  157. }else{
  158. if (boserForm.value.accessCode === '' && needCode.value) {
  159. ElMessage({
  160. type: "error",
  161. message: "私有访问码不能为空"
  162. })
  163. return
  164. }
  165. query={
  166. "dirName": boserForm.value.dirName,
  167. "parentId": newdrid - 0,
  168. "spaceId": newspid - 0,
  169. "isEncrypt":boserForm.value.isEncrypt,
  170. "encryptLevel":boserForm.value.isEncrypt == "Y"?boserForm.value.encryptLevel:null,
  171. "accessCode":boserForm.value.accessCode?sm3(boserForm.value.accessCode):''
  172. }
  173. }
  174. documents.addDocument(
  175. query
  176. ).then(res => {
  177. if (res.code === 200) {
  178. ElMessage({
  179. message: '添加成功',
  180. type: 'success',
  181. })
  182. }
  183. addBoser.value = false
  184. emit("getChildrenC", addBoser.value)
  185. props.refreshFile()
  186. })
  187. }
  188. }
  189. }
  190. const getLevelList = async ()=>{
  191. const res = await getLevel()
  192. if(res.rows){
  193. levelList.value = res.rows
  194. }
  195. // console.log('level',res);
  196. }
  197. //监听加密等级
  198. watch(() => boserForm.value.encryptLevel, (newValue, oldValue) => {
  199. const thisRole = levelList.value.find(item=>item.levelCode == newValue)
  200. console.log('thisRole',thisRole);
  201. if(thisRole.roles.l0700){
  202. needCode.value = true
  203. }else{
  204. needCode.value = false
  205. }
  206. }, {
  207. deep: true
  208. });
  209. onMounted(() => {
  210. inital()
  211. getLevelList()
  212. })
  213. return {
  214. addBoser,
  215. boserForm,
  216. inital,
  217. addBack: backTo,
  218. sureAddBoser: addFloder,
  219. diClose: backTo,
  220. spId,
  221. drId,
  222. newdrid,
  223. newspid,
  224. levelList,
  225. getLevelList,
  226. FolderRole,
  227. free,
  228. needCode
  229. }
  230. }
  231. }
  232. </script>
  233. <style lang="scss" scoped></style>