lrf402788946 4 years ago
parent
commit
7a3f3a308d
2 changed files with 205 additions and 18 deletions
  1. 205 0
      app/model/order.js
  2. 0 18
      app/service/car/daily.js

+ 205 - 0
app/model/order.js

@@ -0,0 +1,205 @@
+'use strict';
+const Schema = require('mongoose').Schema;
+const metaPlugin = require('naf-framework-mongoose/lib/model/meta-plugin');
+// 签收数据
+const arriveList = new Schema({
+  name: { type: String, maxLength: 200 }, // 货物名
+  number: { type: Number, maxLength: 200 }, // 数量
+  weight: { type: Number, maxLength: 200 }, // 重量
+  volume: { type: Number, maxLength: 200 }, // 体积
+  time: { type: String, maxLength: 200 }, // 收货时间
+  remark: { type: String, maxLength: 200 },
+});
+// 货物列表
+const goods = new Schema({
+  name: { type: String, maxLength: 200 }, // 货物名
+  number: { type: Number, maxLength: 200 }, // 数量
+  weight: { type: Number, maxLength: 200 }, // 重量
+  volume: { type: Number, maxLength: 200 }, // 体积
+  remark: { type: String, maxLength: 200 },
+});
+
+// 拆分货物
+// 刚生成订单,货物数据同时进入货物列表和拆分列表时,type为0;
+// 之后所有拆分生成的数据,type都是1
+const splitGoods = new Schema({
+  name: { type: String, maxLength: 200 }, // 货物名
+  number: { type: Number, maxLength: 200, default: 0 }, // 数量
+  weight: { type: Number, maxLength: 200 }, // 重量
+  volume: { type: Number, maxLength: 200 }, // 体积
+  remark: { type: String, maxLength: 200 },
+  pid: { type: String, maxLength: 200, required: true }, // 来源id;type为0时,从goods中去找;1时,就都是这个文档的事了
+  type: { type: String, maxLength: 200, default: '0' }, // 0=>原始数据;1=>拆分数据,
+  status: { type: String, maxLength: 200, default: '0' }, // 0=>未装车; 1=>运输中; 2=>已到达
+});
+
+// 订单
+const order = {
+  order_no: {
+    type: String,
+    required: true,
+    maxLength: 200,
+    field: { label: '订单号', filter: true },
+  },
+  owner: {
+    type: String,
+    required: true,
+    maxLength: 200,
+    field: { label: '订单创建人' },
+  },
+  client: {
+    type: String,
+    required: true,
+    maxLength: 200,
+    field: { label: '客户' },
+  },
+  rq_send_time: {
+    type: String,
+    required: true,
+    maxLength: 200,
+    field: { label: '要求发货日期' },
+  },
+  send_time: {
+    type: String,
+    required: true,
+    maxLength: 200,
+    field: { label: '发货日期' },
+  },
+  rq_arrive_time: {
+    type: String,
+    required: true,
+    maxLength: 200,
+    field: { label: '要求到达日期' },
+  },
+  // 到达日期有问题:应该有多种货物不同到达日期 或 某种货物被拆分,不同的到达日期
+  // 但是这并不影响要求 到达日期
+  arrive: {
+    type: [ arriveList ],
+    required: true,
+    maxLength: 200,
+    field: { label: '到达日期' },
+  },
+  pre_money: {
+    type: String,
+    required: true,
+    maxLength: 200,
+    field: { label: '预售金额', type: 'number' },
+  },
+  goods: {
+    type: [ goods ],
+    required: true,
+    maxLength: 200,
+    field: {
+      label: '货物',
+      remark: '只用来记录货物最开始的情况,一旦进行拆分,则不允许更改',
+    },
+  },
+  split: {
+    type: [ splitGoods ],
+    required: true,
+    maxLength: 200,
+    field: {
+      label: '货物拆分列表',
+      remark: '货物录入后,同时进入这里,这里的货物供拆分使用',
+    },
+  },
+  goods_bill: {
+    type: Array,
+    required: true,
+    maxLength: 200,
+    field: { label: '货物收入单据' },
+  },
+  in_bill: {
+    type: Array,
+    required: true,
+    maxLength: 200,
+    field: { label: '收入-服务单据' },
+  },
+  out_bill: {
+    type: Array,
+    required: true,
+    maxLength: 200,
+    field: { label: '支出-服务单据' },
+  },
+  transport_bill: {
+    type: Array,
+    required: true,
+    maxLength: 200,
+    field: {
+      label: '运输支出单据',
+      remark: `主要问题在这,这里的运输单据要映射到运输表中;且可以修改;有可能有多条数据,比如此单是往返单,货物可能一开始没有填全,只填了去的货物,而途中,此单可能变成单程单,之后可能空车回来或者参与其他单.
+        还可能此单原来是单程单,之后需要在这单上加些货物回来,就变成往返单,或可以运输结束的单子
+        还有可能是:此单需要多段运输,每段运输都需要记录
+        `,
+    },
+  },
+  is_js: {
+    type: String,
+    maxLength: 200,
+    default: '0',
+    field: {
+      label: '结算状态',
+      filter: 'select',
+      type: 'radio',
+      format: (i => (i === '0' ? '未结算' : '已结算')).toString(),
+      list: [
+        { label: '未结算', value: '0' },
+        { label: '已结算', value: '1' },
+      ],
+    },
+  },
+  goods_status: {
+    type: String,
+    maxLength: 200,
+    default: '0',
+    field: {
+      label: '货物状态',
+      filter: 'select',
+      type: 'radio',
+      remark: `查看拆分列表中
+        1)所有的货物状态都为0 => 未发车
+        2)至少1个0,其余全为1,没有2=> 部分货物未发车 ; 部分运输中
+        3)至少1个0,至少1个1,至少1个2=> 部分货物未发车 ; 部分运输中 ; 部分货物已到达
+        4)至少1个0,没有1,其余全为2=> 部分货物未发车 ; 部分货物已到达
+        5)没有0,全为1,没有2 => 所有货物运输中
+        4)没有0,至少1个1,其余全为2 => 所有货物运输中 ; 部分货物已到达
+        6)没有0,没有1,全为2 => 所有货物已到达
+      `,
+    },
+  },
+  status: {
+    type: String,
+    maxLength: 200,
+    default: '0',
+    field: {
+      label: '状态',
+      filter: 'select',
+      type: 'radio',
+      format: (i => (i === '0' ? '正常' : '冻结')).toString(),
+      list: [
+        { label: '正常', value: '0' },
+        { label: '冻结', value: '1' },
+      ],
+      remark: '冻结时不允许操作和此单有关的信息,运输改变货物及订单状态部分除外',
+    },
+  }, // 状态:0=>使用;1禁用
+  remark: {
+    type: String,
+    required: false,
+    maxLength: 200,
+    field: {
+      label: '备注',
+      type: 'textarea',
+      options: { autosize: { minRows: 3, maxRows: 5 } },
+    },
+  },
+};
+
+const schema = new Schema(order, { toJSON: { virtuals: true } });
+schema.index({ id: 1 });
+schema.plugin(metaPlugin);
+
+module.exports = app => {
+  const { mongoose } = app;
+  return mongoose.model('Order', schema, 'order');
+};

+ 0 - 18
app/service/car/daily.js

@@ -12,24 +12,6 @@ class DailyService extends CrudService {
     this.model = this.ctx.model.Daily;
   }
 
-  // async query(data, options) {
-  //   const keys = Object.keys(data);
-  //   const query = {};
-  //   for (const k of keys) {
-  //     if (k.includes('-')) {
-  //       const karr = k.split('-');
-  //       if (karr.length === 2) {
-  //         const type = karr[1];
-  //         if (type === 'start') query[karr[0]] = { ..._.get(query, karr[0], {}), $gte: data[k] };
-  //         else query[karr[0]] = { ..._.get(query, karr[0], {}), $lte: data[k] };
-  //       }
-  //     }
-  //   }
-  //   console.log(query);
-  //   const res = await this.model.find(query);
-  //   console.log(res);
-  //   return res;
-  // }
 }
 
 module.exports = DailyService;