lrf402788946 hace 4 años
padre
commit
6760e6f6d7

+ 18 - 0
README.md

@@ -2,6 +2,24 @@
 
 此项目没有修改框架,所以model部分如果使用子目录,会引发错误,controller和service,router使用子目录不会产生bug
 
+添加模糊查询:naf-framework-mongoose>lib>service>crud-service中
+query和count在操作model前加上下面的代码
+> filter = this.turnFilter(filter);
+
+之后添加函数 turnFilter
+>turnFilter(filter){
+    let str = /^%\w*%$/;
+    let keys = Object.keys(filter);
+    for (const key of keys) {
+      let res = key.match(str);
+      if (res) {
+        let newKey = key.slice(1, key.length - 1);
+        filter[newKey] = new RegExp(filter[key]);
+        delete filter[key];
+      }
+    }
+    return filter;
+  }
 
 ## QuickStart
 

+ 2 - 2
app/controller/client/.client.js

@@ -39,8 +39,8 @@ module.exports = {
   index: {
     parameters: {
       query: {
-        name: "name",
-        legal: "legal",
+        name: "%name%",
+        legal: "%legal%",
         mobile: "mobile",
         type: "type",
         status: "status",

+ 36 - 0
app/controller/client/.item.js

@@ -0,0 +1,36 @@
+module.exports = {
+  create: {
+    requestBody: ["!treaty", "!name", "!taxes", "status", "!owner"],
+  },
+  destroy: {
+    params: ["!id"],
+    service: "delete",
+  },
+  update: {
+    params: ["!id"],
+    requestBody: ["!treaty", "!name", "!taxes", "status", "!owner"],
+  },
+  show: {
+    parameters: {
+      params: ["!id"],
+    },
+    service: "fetch",
+  },
+  index: {
+    parameters: {
+      query: {
+        treaty: "treaty",
+        name: "%name%",
+        owner: "owner",
+        status: "status",
+      },
+    },
+    service: "query",
+    options: {
+      query: ["skip", "limit"],
+      sort: ["meta.createdAt"],
+      desc: true,
+      count: true,
+    },
+  },
+};

+ 2 - 2
app/controller/client/.treaty.js

@@ -40,8 +40,8 @@ module.exports = {
     parameters: {
       query: {
         client: "client",
-        number: "number",
-        jf: "jf",
+        number: "%number%",
+        jf: "%jf%",
         owner: "owner",
         status: "status",
       },

+ 16 - 0
app/controller/client/item.js

@@ -0,0 +1,16 @@
+'use strict';
+
+// const _ = require('lodash');
+const meta = require('./.item.js');
+const Controller = require('egg').Controller;
+const { CrudController } = require('naf-framework-mongoose/lib/controller');
+
+// 客户/供应商
+class ItemController extends Controller {
+  constructor(ctx) {
+    super(ctx);
+    this.service = this.ctx.service.client.item;
+  }
+}
+
+module.exports = CrudController(ItemController, meta);

+ 1 - 1
app/controller/personnel/.driver.js

@@ -41,7 +41,7 @@ module.exports = {
   index: {
     parameters: {
       query: {
-        name: "name",
+        name: "%name%",
         tel: "tel",
         id_card: "id_card",
         drive_card: "drive_card",

+ 4 - 4
app/controller/system/.dictionary.js

@@ -21,8 +21,8 @@ module.exports = {
       query: {
         categroy: "categroy",
         pid: "pid",
-        label: "label",
-        value: "value",
+        label: "%label%",
+        value: "%value%",
         status: "status",
         dstatus: "dstatus",
       },
@@ -40,8 +40,8 @@ module.exports = {
       query: {
         categroy: "categroy",
         pid: "pid",
-        label: "label",
-        value: "value",
+        label: "%label%",
+        value: "%value%",
         status: "status",
         dstatus: "dstatus",
       },

+ 53 - 0
app/model/item.js

@@ -0,0 +1,53 @@
+'use strict';
+const Schema = require('mongoose').Schema;
+const metaPlugin = require('naf-framework-mongoose/lib/model/meta-plugin');
+// 合同
+const item = {
+  treaty: {
+    type: String,
+    required: true,
+    maxLength: 200,
+    field: { label: '合同', required: true },
+  },
+  name: {
+    type: String,
+    required: true,
+    maxLength: 200,
+    field: { label: '项目名', filter: true, required: true },
+  },
+  taxes: {
+    type: String,
+    required: true,
+    maxLength: 200,
+    field: { label: '税率', filter: true, required: true },
+  },
+  status: {
+    type: String,
+    maxLength: 200,
+    default: '0',
+    field: {
+      label: '状态',
+      filter: 'select',
+      type: 'select',
+      format: (i => (i === '0' ? '使用' : '禁用')).toString(),
+      list: [
+        { label: '使用', value: '0' },
+        { label: '禁用', value: '1' },
+      ],
+    },
+  }, // 状态:0=>使用;1禁用
+  owner: { type: String, required: true }, // 创建人
+};
+
+const schema = new Schema(item, { toJSON: { virtuals: true } });
+schema.index({ id: 1 });
+schema.index({ name: 1 });
+schema.index({ status: 1 });
+schema.index({ owner: 1 });
+
+schema.plugin(metaPlugin);
+
+module.exports = app => {
+  const { mongoose } = app;
+  return mongoose.model('Item', schema, 'item');
+};

+ 3 - 0
app/router/client.js

@@ -12,5 +12,8 @@ module.exports = app => {
   // 合同
   router.resources('treaty', `${prefix}/treaty`, controller[index].treaty); // index、create、show、destroy
   router.post('treaty', `${prefix}/treaty/update/:id`, controller[index].treaty.update);
+  // 项目
+  router.resources('item', `${prefix}/item`, controller[index].item); // index、create、show、destroy
+  router.post('item', `${prefix}/item/update/:id`, controller[index].item.update);
 
 };

+ 16 - 0
app/service/client/item.js

@@ -0,0 +1,16 @@
+'use strict';
+
+const assert = require('assert');
+const _ = require('lodash');
+const { ObjectId } = require('mongoose').Types;
+const { CrudService } = require('naf-framework-mongoose/lib/service');
+const { ZhwldriverError, ErrorCode } = require('naf-core').Error;
+
+class ItemService extends CrudService {
+  constructor(ctx) {
+    super(ctx, 'item');
+    this.model = this.ctx.model.Item;
+  }
+}
+
+module.exports = ItemService;