Explorar o código

新增文章、期刊读者

asd123a20 %!s(int64=3) %!d(string=hai) anos
pai
achega
0b86c016a2

+ 14 - 2
admin-content/src/store/index.js

@@ -7,17 +7,25 @@ const api = {
   contentsDelete: '/api/cms/contents/delete',
   contentsQuery: '/api/cms/contents/query',
   contentsFetch: '/api/cms/contents/fetch',
-  columnQuery: '/api/cms/column/query'
+  columnQuery: '/api/cms/column/query',
+  userQuery: '/api/reader/user/query'
 };
 Vue.use(Vuex);
 const state = () => ({
   Total: 0,
   contentsList: [],
   columnList: [],
-  dict: {}
+  dict: {},
+  userList: [],
+  userTotal: 0
 });
 
 const actions = {
+  async userQuery ({ commit }, { filter, paging } = {}) {
+    const res = await $axios.get(api.userQuery, { ...filter, skip: paging.page, limit: paging.size });
+    commit('userQuery', res);
+    return res;
+  },
   async contentsCreate ({ commit }, payload) {
     const res = await $axios.post(api.contentsCreate, payload);
     return res;
@@ -54,6 +62,10 @@ const mutations = {
   columnQuery(state, payload) {
     state.columnList = payload.data;
     state.dict.column = payload.data;
+  },
+  userQuery(state, payload) {
+    state.userList = payload.data.map(e => e.userList[0]);
+    state.userTotal = payload.total;
   }
 };
 

+ 30 - 6
admin-content/src/views/home.vue

@@ -6,12 +6,12 @@
         <el-button style="float: right; padding: 3px 0" type="text" @click="addcontents">添加文章</el-button>
       </div>
       <div class="main">
-        <filterList ref="filterList" :tableData="contents" :filed="filed" @edit="filtereEdit" @delete="filterDelete" @query="filterQuery" :total="Total"></filterList>
+        <filterList ref="filterList" :operation="operation" :tableData="contents" :filed="filed" @user="users" @edit="filtereEdit" @delete="filterDelete" @query="filterQuery" :total="Total"></filterList>
       </div>
     </el-card>
-    <dialogAndDrawer :width="'35%'" :title="title" :visibleSync="visibleSync" v-if="visibleSync" @close="visibleSync = false">
+    <dialogAndDrawer :width="'35%'" :title="title" :visibleSync="visibleSync" v-if="visibleSync" @close="visibleSync = false, lookUser = false">
       <template v-slot:windowMain>
-        <formData ref="formData" :filed="formfiled" :data="formdata" :rules="formrules" @save="formSave" v-if="visibleSync">
+        <formData v-if="!lookUser" ref="formData" :filed="formfiled" :data="formdata" :rules="formrules" @save="formSave">
           <template v-slot:formItem="{ item, formdata }">
             <!-- 缩略图 -->
             <el-upload
@@ -40,6 +40,7 @@
             </el-upload>
           </template>
         </formData>
+        <filterList v-else ref="filterList" :tableData="userList"  :filter="false" :readOnly="true" :filed="userfiled" @query="userfilterQuery" :total="userTotal"></filterList>
       </template>
     </dialogAndDrawer>
   </div>
@@ -60,6 +61,8 @@ export default {
   },
   data() {
     return {
+      info: {},
+      lookUser: false,
       fileList: [],
       myHeaders: { Authorization: token },
       title: '',
@@ -70,6 +73,10 @@ export default {
         { name: 'visit', label: '访问量' }
       ],
       formdata: {},
+      userfiled: [
+        { name: 'name', label: '名称' },
+        { name: 'phone', label: '手机号' }
+      ],
       formfiled: [
         { name: 'thumbnail', label: '缩略图', formater: 'slot' },
         { name: 'title', label: '标题' },
@@ -98,11 +105,16 @@ export default {
         content: [
           { required: true, message: '请输入内容', trigger: 'blur' }
         ]
-      }
+      },
+      operation: [
+        { name: 'user', label: '读者', icon: 'el-icon-user' },
+        { name: 'edit', label: '修改', icon: 'el-icon-edit' },
+        { name: 'delete', label: '删除', icon: 'el-icon-delete' }
+      ]
     };
   },
   computed: {
-    ...mapState(['contentsList', 'Total', 'columnList']),
+    ...mapState(['contentsList', 'Total', 'columnList', 'userList', 'userTotal']),
     contents() {
       this.contentsList.map(p => {
         const findName = this.columnList.find(e => e.code == p.bind);
@@ -117,7 +129,19 @@ export default {
     await this.columnQuery();
   },
   methods: {
-    ...mapActions(['contentsQuery', 'contentsCreate', 'contentsUpdate', 'contentsDelete', 'contentsQuery', 'contentsFetch', 'columnQuery']),
+    ...mapActions(['contentsQuery', 'contentsCreate', 'contentsUpdate', 'contentsDelete', 'contentsQuery', 'contentsFetch', 'columnQuery', 'userQuery']),
+    // 查看读者
+    async users(e) {
+      this.lookUser = true;
+      this.title = '读者列表';
+      this.visibleSync = true;
+      this.info = e;
+      this.userfilterQuery();
+    },
+    // 读者分页查询
+    async userfilterQuery ({ filter = {}, paging = { content: 0, size: 10 } } = {}) {
+      await this.userQuery({ filter: { source: this.info._id }, paging });
+    },
     // 添加
     addcontents () {
       this.formdata = {};

+ 14 - 2
admin-journal-catalogue/src/store/index.js

@@ -8,17 +8,25 @@ const api = {
   catalogueQuery: '/api/journal/catalogue/query',
   catalogueFetch: '/api/journal/catalogue/fetch',
   dictQuery: '/api/code/dictionary/query',
-  journalQuery: '/api/journal/intact/query'
+  journalQuery: '/api/journal/intact/query',
+  userQuery: '/api/reader/user/query'
 };
 Vue.use(Vuex);
 const state = () => ({
   Total: 0,
   catalogueList: [],
   journalList: [],
-  dict: {}
+  dict: {},
+  userList: [],
+  userTotal: 0
 });
 
 const actions = {
+  async userQuery ({ commit }, { filter, paging } = {}) {
+    const res = await $axios.get(api.userQuery, { ...filter, skip: paging.page, limit: paging.size });
+    commit('userQuery', res);
+    return res;
+  },
   async catalogueCreate ({ commit }, payload) {
     const res = await $axios.post(api.catalogueCreate, payload);
     return res;
@@ -72,6 +80,10 @@ const mutations = {
     payload.data = payload.data.map(e => ({ ...e, code: e._id }));
     state.dict.journalQuery = payload.data;
     state.journalList = payload.data;
+  },
+  userQuery(state, payload) {
+    state.userList = payload.data.map(e => e.userList[0]);
+    state.userTotal = payload.total;
   }
 };
 

+ 30 - 6
admin-journal-catalogue/src/views/home.vue

@@ -6,12 +6,12 @@
         <el-button style="float: right; padding: 3px 0" type="text" @click="addcatalogue">添加期刊</el-button>
       </div>
       <div class="main">
-        <filterList ref="filterList" :tableData="catalogueList" :filed="filed" @edit="filtereEdit" @delete="filterDelete" @query="filterQuery" :total="Total"></filterList>
+        <filterList ref="filterList" :operation="operation" :tableData="catalogueList" :filed="filed" @user="users" @edit="filtereEdit" @delete="filterDelete" @query="filterQuery" :total="Total"></filterList>
       </div>
     </el-card>
-    <dialogAndDrawer :width="'35%'" :title="title" :visibleSync="visibleSync" v-if="visibleSync" @close="visibleSync = false">
+    <dialogAndDrawer :width="'35%'" :title="title" :visibleSync="visibleSync" v-if="visibleSync" @close="visibleSync = false, lookUser = false">
       <template v-slot:windowMain>
-        <formData ref="formData" :filed="formfiled" :data="formdata" :rules="formrules" @save="formSave" v-if="visibleSync">
+        <formData ref="formData" :filed="formfiled" :data="formdata" :rules="formrules" @save="formSave" v-if="!lookUser">
           <template v-slot:formItem="{ item, formdata }">
             <!-- 富文本 -->
             <editoritem v-if="item.name == 'content'" @change="editChage" :value="formdata[item.name]"></editoritem>
@@ -28,6 +28,7 @@
             </el-upload>
           </template>
         </formData>
+        <filterList v-else ref="filterList" :tableData="userList"  :filter="false" :readOnly="true" :filed="userfiled" @query="userfilterQuery" :total="userTotal"></filterList>
       </template>
     </dialogAndDrawer>
   </div>
@@ -52,6 +53,8 @@ export default {
   },
   data() {
     return {
+      info: {},
+      lookUser: false,
       fileList: [],
       myHeaders: { Authorization: token },
       title: '',
@@ -99,11 +102,20 @@ export default {
         content: [
           { required: true, message: '请输输入内容', trigger: 'blur' }
         ]
-      }
+      },
+      operation: [
+        { name: 'user', label: '读者', icon: 'el-icon-user' },
+        { name: 'edit', label: '修改', icon: 'el-icon-edit' },
+        { name: 'delete', label: '删除', icon: 'el-icon-delete' }
+      ],
+      userfiled: [
+        { name: 'name', label: '名称' },
+        { name: 'phone', label: '手机号' }
+      ]
     };
   },
   computed: {
-    ...mapState(['catalogueList', 'Total', 'journalList'])
+    ...mapState(['catalogueList', 'Total', 'journalList', 'userList', 'userTotal'])
   },
   async created() {
     await this.statusQuery();
@@ -112,7 +124,19 @@ export default {
     await this.filterQuery();
   },
   methods: {
-    ...mapActions(['catalogueQuery', 'catalogueCreate', 'catalogueUpdate', 'catalogueDelete', 'catalogueQuery', 'catalogueFetch', 'statusQuery', 'columnQuery', 'journalQuery']),
+    ...mapActions(['catalogueQuery', 'catalogueCreate', 'catalogueUpdate', 'catalogueDelete', 'catalogueQuery', 'catalogueFetch', 'statusQuery', 'columnQuery', 'journalQuery', 'userQuery']),
+    // 查看读者
+    async users(e) {
+      this.lookUser = true;
+      this.title = '读者列表';
+      this.visibleSync = true;
+      this.info = e;
+      this.userfilterQuery();
+    },
+    // 读者分页查询
+    async userfilterQuery ({ filter = {}, paging = { content: 0, size: 10 } } = {}) {
+      await this.userQuery({ filter: { source: this.info._id }, paging });
+    },
     // 添加
     addcatalogue () {
       this.formdata = {};