Przeglądaj źródła

知识库修改权限中新增查看权限

kuaifan 5 lat temu
rodzic
commit
234a1f4700

+ 13 - 8
app/Http/Controllers/Api/DocsController.php

@@ -46,6 +46,7 @@ class DocsController extends Controller
         $lists = DB::table('docs_book')
             ->where('username', $user['username'])
             ->orWhere('role_edit', 'reg')
+            ->orWhere('role_look', 'reg')
             ->orWhere(function ($query) use ($user) {
                 $query->where('role_edit', 'private')->where('username', $user['username']);
             })
@@ -136,8 +137,9 @@ class DocsController extends Controller
         }
         //
         $id = intval(Request::input('id'));
+        $type = trim(Request::input('type'));
         $role = Docs::checkRole($id, 'edit');
-        if (Base::isError($role)) {
+        if (Base::isError($role) && $role['data'] < 0) {
             return $role;
         }
         $row = Base::DBC2A(DB::table('docs_book')->where('id', $id)->first());
@@ -145,15 +147,18 @@ class DocsController extends Controller
             return Base::retError('知识库不存在或已被删除!');
         }
         $setting = Base::string2array($row['setting']);
-        $type = trim(Request::input('type'));
         if ($type == 'save') {
+            if (Base::isError($role)) {
+                return $role;
+            }
             foreach (Request::input() AS $key => $value) {
-                if (in_array($key, ['role_edit', 'role_view'])) {
+                if (in_array($key, ['role_edit', 'role_look', 'role_view'])) {
                     $setting[$key] = $value;
                 }
             }
             DB::table('docs_book')->where('id', $id)->update([
                 'role_edit' => $setting['role_edit'],
+                'role_look' => $setting['role_look'],
                 'role_view' => $setting['role_view'],
                 'setting' => Base::array2string($setting),
             ]);
@@ -314,7 +319,7 @@ class DocsController extends Controller
     {
         $bookid = intval(Request::input('bookid'));
         $role = Docs::checkRole($bookid, Request::input('act'));
-        if (Base::isError($role)) {
+        if (Base::isError($role) && $role['data'] < 0) {
             return $role;
         }
         $lists = Base::DBC2A(DB::table('docs_section')
@@ -509,7 +514,7 @@ class DocsController extends Controller
             return Base::retError('文档不存在或已被删除!');
         }
         $role = Docs::checkRole($row['bookid'], Request::input('act'));
-        if (Base::isError($role)) {
+        if (Base::isError($role) && $role['data'] < 0) {
             return $role;
         }
         $whereArray = [];
@@ -543,8 +548,8 @@ class DocsController extends Controller
         if (empty($row)) {
             return Base::retError('文档不存在或已被删除!');
         }
-        $role = Docs::checkRole($row['bookid'], 'view');
-        if (Base::isError($role)) {
+        $role = Docs::checkRole($row['bookid'], 'edit');
+        if (Base::isError($role) && $role['data'] < 0) {
             return $role;
         }
         //
@@ -619,7 +624,7 @@ class DocsController extends Controller
     }
 
     /**
-     * 保存章节内容
+     * 锁定章节内容
      *
      * @apiParam {String} act
      * - lock: 锁定

+ 3 - 3
app/Module/Docs.php

@@ -23,7 +23,7 @@ class Docs
     {
         $row = Base::DBC2A(DB::table('docs_book')->where('id', $bookid)->first());
         if (empty($row)) {
-            return Base::retError('知识库不存在或已被删除!');
+            return Base::retError('知识库不存在或已被删除!', -1000);
         }
         $userE = Users::authE();
         if (Base::isError($userE)) {
@@ -49,11 +49,11 @@ class Docs
         //
         if ($row['role_' . $checkType] == 'member') {
             if (!DB::table('docs_users')->where('bookid', $bookid)->where('username', $user['username'])->exists()) {
-                return Base::retError('知识库仅对成员开放!', -1002);
+                return Base::retError('知识库仅对成员开放!', $checkType == 'edit' && $row['role_look'] == 'reg' ? 1002 : -1002);
             }
         } elseif ($row['role_' . $checkType] == 'private') {
             if ($row['username'] != $user['username']) {
-                return Base::retError('知识库仅对作者开放!', -1003);
+                return Base::retError('知识库仅对作者开放!', $checkType == 'edit' && $row['role_look'] == 'reg' ? 1003 : -1003);
             }
         }
         //

+ 48 - 17
resources/assets/js/main/components/docs/setting.vue

@@ -5,22 +5,48 @@
                 <FormItem :label="$L('文档链接')">
                     <a class="form-link" target="_blank" :href="$A.webUrl('docs/view/b' + this.id)">{{$A.webUrl('docs/view/b' + this.id)}}</a>
                 </FormItem>
-                <FormItem :label="$L('修改权限')">
+                <FormItem :label="$L('管理权限')">
                     <div>
-                        <RadioGroup v-model="formSystem.role_edit">
-                            <Radio label="private">{{$L('私有文库')}}</Radio>
-                            <Radio label="member">{{$L('成员开放')}}</Radio>
-                            <Radio label="reg">{{$L('注册会员')}}</Radio>
-                        </RadioGroup>
+                        <div class="form-title">{{$L('修改权限')}}</div>
+                        <div>
+                            <div>
+                                <RadioGroup v-model="formSystem.role_edit">
+                                    <Radio label="private">{{$L('私有文库')}}</Radio>
+                                    <Radio label="member">{{$L('成员开放')}}</Radio>
+                                    <Radio label="reg">{{$L('注册会员')}}</Radio>
+                                </RadioGroup>
+                            </div>
+                            <div v-if="formSystem.role_edit=='private'" class="form-placeholder">
+                                {{$L('仅作者可以修改。')}}
+                            </div>
+                            <div v-else-if="formSystem.role_edit=='member'" class="form-placeholder">
+                                {{$L('仅作者和文档成员可以修改。')}}
+                            </div>
+                            <div v-else-if="formSystem.role_edit=='reg'" class="form-placeholder">
+                                {{$L('所有会员都可以修改。')}}
+                            </div>
+                        </div>
                     </div>
-                    <div v-if="formSystem.role_edit=='private'" class="form-placeholder">
-                        {{$L('仅作者可以修改。')}}
-                    </div>
-                    <div v-else-if="formSystem.role_edit=='member'" class="form-placeholder">
-                        {{$L('仅作者和文档成员可以修改。')}}
-                    </div>
-                    <div v-else-if="formSystem.role_edit=='reg'" class="form-placeholder">
-                        {{$L('所有会员都可以修改。')}}
+                    <div>
+                        <div class="form-title">{{$L('查看权限')}}</div>
+                        <div>
+                            <div>
+                                <RadioGroup v-if="formSystem.role_edit=='reg'" value="reg">
+                                    <Radio label="edit" disabled>{{$L('修改权限')}}</Radio>
+                                    <Radio label="reg" disabled>{{$L('注册会员')}}</Radio>
+                                </RadioGroup>
+                                <RadioGroup v-else v-model="formSystem.role_look">
+                                    <Radio label="edit">{{$L('修改权限')}}</Radio>
+                                    <Radio label="reg">{{$L('注册会员')}}</Radio>
+                                </RadioGroup>
+                            </div>
+                            <div v-if="formSystem.role_look=='edit'" class="form-placeholder">
+                                {{$L('仅有修改权限的人员。')}}
+                            </div>
+                            <div v-else-if="formSystem.role_look=='reg'" class="form-placeholder">
+                                {{$L('所有会员都可以修改。')}}
+                            </div>
+                        </div>
                     </div>
                 </FormItem>
                 <FormItem :label="$L('阅读权限')">
@@ -57,6 +83,9 @@
 <style lang="scss" scoped>
     .book-setting {
         padding: 0 12px;
+        .form-title {
+            font-weight: bold;
+        }
         .form-link {
             text-decoration: underline;
         }
@@ -126,9 +155,11 @@
                     },
                     success: (res) => {
                         if (res.ret === 1) {
-                            this.formSystem = res.data;
-                            this.formSystem.role_edit = this.formSystem.role_edit || 'reg';
-                            this.formSystem.role_view = this.formSystem.role_view || 'all';
+                            let data = res.data;
+                            data.role_edit = data.role_edit || 'reg';
+                            data.role_look = data.role_look || 'edit';
+                            data.role_view = data.role_view || 'all';
+                            this.formSystem = data;
                             if (save) {
                                 this.$Message.success(this.$L('修改成功'));
                             }

+ 3 - 1
resources/assets/js/main/pages/docs/edit.vue

@@ -415,7 +415,9 @@
             }, false);
             //
             setInterval(() => {
-                this.timeValue = Math.round(new Date().getTime() / 1000);
+                if (this.routeName === this.$route.name) {
+                    this.timeValue = Math.round(new Date().getTime() / 1000);
+                }
             });
             //
             $(window).bind('beforeunload', () => {