123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150 |
- 'use strict';
- const moment = require('moment');
- const Schema = require('mongoose').Schema;
- const metaPlugin = require('naf-framework-mongoose/lib/model/meta-plugin');
- // 货物列表
- const goodsList = new Schema({
- name: { type: String, maxlength: 200 }, // 货物名称
- number: { type: Number, maxLength: 200 }, // 数量
- weight: { type: Number, maxLength: 200 }, // 重量
- volume: { type: Number, maxLength: 200 }, // 体积
- taxes: { type: String, maxLength: 200 }, // 税率
- sq_ys: { type: Number, maxLength: 200 }, // 税前应收
- sq_ss: { type: Number, maxLength: 200 }, // 税前实收
- sh_ys: { type: Number, maxLength: 200 }, // 税后应收
- sh_ss: { type: Number, maxLength: 200 }, // 税后实收
- split_id: { type: String, maxLength: 200, required: true }, // 拆分的货物id
- });
- // 运输支出(单车,单趟)
- const bill = new Schema({
- item: { type: String, maxlength: 200 }, // 支出项
- taxes: { type: String, maxLength: 200 }, // 税率
- sq_ys: { type: Number, maxLength: 200 }, // 税前应收
- sq_ss: { type: Number, maxLength: 200 }, // 税前实收
- sh_ys: { type: Number, maxLength: 200 }, // 税后应收
- sh_ss: { type: Number, maxLength: 200 }, // 税后实收
- });
- // 运输方信息
- const supplier = new Schema({
- car_no: { type: String, maxlength: 200 }, // 车牌号,0/2使用
- client: { type: String, maxlength: 200 }, // 客户
- treaty: { type: String, maxlength: 200 }, // 合同
- item: { type: String, maxlength: 200 }, // 项目
- route: { type: String, maxlength: 200 }, // 线路
- mode: { type: String, maxlength: 200 }, // 计费方式
- taxes: { type: String, maxLength: 200 }, // 税率
- });
- // 运输信息
- const transport = {
- no: {
- type: String,
- required: true,
- field: { label: '运输单号' },
- },
- owner: {
- type: String,
- required: true,
- maxLength: 200,
- field: { label: '运输单负责人', remark: '谁装的车就是谁' },
- },
- supply_type: {
- type: String,
- required: true,
- field: {
- label: '运输单位类型',
- list: [
- { label: '自运', value: '0' },
- { label: '供应商', value: '1' },
- { label: '第三方单位', value: '2' },
- ],
- },
- },
- supplier: {
- type: supplier,
- required: true,
- maxLength: 200,
- field: {
- label: '运输单位信息',
- remark: `0=>这里就是车牌号
- 1=>这里就是供应商至计费方式的信息
- 2=>这里就是 个体(车号) 等一次性单位
- `,
- },
- },
- goods: {
- type: [ goodsList ],
- field: { label: '货物列表' },
- },
- sign_time: {
- type: String,
- field: { label: '签收时间' },
- },
- route: {
- type: String,
- required: true,
- field: { label: '线路' },
- },
- out_bill: {
- type: [ bill ],
- maxLength: 200,
- field: { label: '运输支出单据' },
- },
- remark: {
- type: String,
- required: false,
- maxLength: 200,
- field: {
- label: '备注',
- type: 'textarea',
- options: { autosize: { minRows: 3, maxRows: 5 } },
- },
- },
- 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' },
- ],
- },
- },
- is_js: {
- type: Boolean,
- maxLength: 200,
- default: false,
- field: {
- label: '结算状态',
- filter: 'select',
- type: 'radio',
- format: (i => (i ? '已结算' : '未结算')).toString(),
- list: [
- { label: '未结算', value: false },
- { label: '已结算', value: true },
- ],
- },
- },
- };
- const schema = new Schema(transport, { toJSON: { virtuals: true } });
- schema.index({ id: 1 });
- schema.index({ no: 1 });
- schema.index({ supply_type: 1 });
- schema.index({ supplier: 1 });
- schema.index({ goods: 1 });
- schema.index({ sign_time: 1 });
- schema.index({ out_bill: 1 });
- schema.index({ remark: 1 });
- schema.index({ status: 1 });
- schema.plugin(metaPlugin);
- module.exports = app => {
- const { mongoose } = app;
- return mongoose.model('Transport', schema, 'transport');
- };
|