|  |  | @@ -16,17 +16,28 @@ class TenancyShotInfo(BaseModelMixin): | 
            
            
              | 16 | 16 |          (1, u'已租'), | 
            
            
              | 17 | 17 |      ) | 
            
            
              | 18 | 18 |   | 
            
            
              | 19 |  | -    admin_id = models.CharField(_(u'admin_id'), max_length=32, blank=True, null=True, help_text=u'经手人唯一标识', db_index=True) | 
            
            
              | 20 |  | -    shot_id = ShortUUIDField(_(u'shot_id'), max_length=32, blank=True, null=True, help_text=u'镜头唯一标识', db_index=True, unique=True) | 
            
            
              | 21 |  | -    model_id = models.CharField(_(u'model_id'), max_length=32, blank=True, null=True, help_text=u'型号唯一标识', db_index=True) | 
            
            
              | 22 |  | -    model_name = models.CharField(_(u'model_name'), max_length=255, blank=True, null=True, help_text=u'型号名称') | 
            
            
              | 23 |  | -    sn = models.CharField(_(u'sn'), max_length=32, blank=True, null=True, help_text=u'序列号', db_index=True) | 
            
            
              | 24 |  | -    front_cap_status = models.BooleanField(_(u'front_cap_status'), default=False, help_text=u'前盖状态') | 
            
            
              | 25 |  | -    rear_cap_status = models.BooleanField(_(u'rear_cap_status'), default=False, help_text=u'后盖状态') | 
            
            
              | 26 |  | -    lens_hood_status = models.BooleanField(_(u'lens_hood_status'), default=False, help_text=u'遮光罩状态') | 
            
            
              | 27 |  | -    tripod_ring_status = models.BooleanField(_(u'tripod_ring_status'), default=False, help_text=u'脚架环状态') | 
            
            
              | 28 |  | -    appearance_performance_status = models.BooleanField(_(u'appearance_performance_status'), default=False, help_text=u'外观性能状态') | 
            
            
              | 29 |  | -    tenancy_status = models.IntegerField(_(u'tenancy_status'), choices=TENANCY_STATUS, default=0, help_text=u'租借状态') | 
            
            
              |  | 19 | +    admin_id = models.CharField(_(u'admin_id'), max_length=32, | 
            
            
              |  | 20 | +                                blank=True, null=True, help_text=u'经手人唯一标识', db_index=True) | 
            
            
              |  | 21 | +    shot_id = ShortUUIDField(_(u'shot_id'), max_length=32, blank=True, | 
            
            
              |  | 22 | +                             null=True, help_text=u'镜头唯一标识', db_index=True, unique=True) | 
            
            
              |  | 23 | +    model_id = models.CharField(_(u'model_id'), max_length=32, | 
            
            
              |  | 24 | +                                blank=True, null=True, help_text=u'型号唯一标识', db_index=True) | 
            
            
              |  | 25 | +    model_name = models.CharField( | 
            
            
              |  | 26 | +        _(u'model_name'), max_length=255, blank=True, null=True, help_text=u'型号名称') | 
            
            
              |  | 27 | +    sn = models.CharField(_(u'sn'), max_length=32, blank=True, | 
            
            
              |  | 28 | +                          null=True, help_text=u'序列号', db_index=True) | 
            
            
              |  | 29 | +    front_cap_status = models.BooleanField( | 
            
            
              |  | 30 | +        _(u'front_cap_status'), default=False, help_text=u'前盖状态') | 
            
            
              |  | 31 | +    rear_cap_status = models.BooleanField( | 
            
            
              |  | 32 | +        _(u'rear_cap_status'), default=False, help_text=u'后盖状态') | 
            
            
              |  | 33 | +    lens_hood_status = models.BooleanField( | 
            
            
              |  | 34 | +        _(u'lens_hood_status'), default=False, help_text=u'遮光罩状态') | 
            
            
              |  | 35 | +    tripod_ring_status = models.BooleanField( | 
            
            
              |  | 36 | +        _(u'tripod_ring_status'), default=False, help_text=u'脚架环状态') | 
            
            
              |  | 37 | +    appearance_performance_status = models.BooleanField( | 
            
            
              |  | 38 | +        _(u'appearance_performance_status'), default=False, help_text=u'外观性能状态') | 
            
            
              |  | 39 | +    tenancy_status = models.IntegerField( | 
            
            
              |  | 40 | +        _(u'tenancy_status'), choices=TENANCY_STATUS, default=0, help_text=u'租借状态') | 
            
            
              | 30 | 41 |   | 
            
            
              | 31 | 42 |      class Meta: | 
            
            
              | 32 | 43 |          verbose_name = _(u'租赁镜头信息') | 
            
            
            
            
              |  |  | @@ -70,53 +81,84 @@ class TenancyShotRequestInfo(BaseModelMixin): | 
            
            
              | 70 | 81 |          (2, u'未通过'), | 
            
            
              | 71 | 82 |      ) | 
            
            
              | 72 | 83 |   | 
            
            
              | 73 |  | -    request_id = ShortUUIDField(_(u'request_id'), max_length=32, blank=True, null=True, help_text=u'申请唯一标识', db_index=True, unique=True) | 
            
            
              | 74 |  | -    admin_id = models.CharField(_(u'admin_id'), max_length=32, blank=True, null=True, help_text=u'经手人唯一标识', db_index=True) | 
            
            
              |  | 84 | +    request_id = ShortUUIDField(_(u'request_id'), max_length=32, blank=True, | 
            
            
              |  | 85 | +                                null=True, help_text=u'申请唯一标识', db_index=True, unique=True) | 
            
            
              |  | 86 | +    admin_id = models.CharField(_(u'admin_id'), max_length=32, | 
            
            
              |  | 87 | +                                blank=True, null=True, help_text=u'经手人唯一标识', db_index=True) | 
            
            
              | 75 | 88 |   | 
            
            
              | 76 |  | -    request_number = models.CharField(_(u'request_number'), max_length=32, blank=True, null=True, help_text=u'线下借单编号', db_index=True) | 
            
            
              |  | 89 | +    request_number = models.CharField( | 
            
            
              |  | 90 | +        _(u'request_number'), max_length=32, blank=True, null=True, help_text=u'线下借单编号', db_index=True) | 
            
            
              | 77 | 91 |   | 
            
            
              | 78 |  | -    shot_id = models.CharField(_(u'shot_id'), max_length=32, blank=True, null=True, help_text=u'镜头唯一标识', db_index=True) | 
            
            
              | 79 |  | -    model_id = models.CharField(_(u'model_id'), max_length=32, blank=True, null=True, help_text=u'镜头型号唯一标识', db_index=True) | 
            
            
              |  | 92 | +    shot_id = models.CharField(_(u'shot_id'), max_length=32, | 
            
            
              |  | 93 | +                               blank=True, null=True, help_text=u'镜头唯一标识', db_index=True) | 
            
            
              |  | 94 | +    model_id = models.CharField(_(u'model_id'), max_length=32, | 
            
            
              |  | 95 | +                                blank=True, null=True, help_text=u'镜头型号唯一标识', db_index=True) | 
            
            
              | 80 | 96 |   | 
            
            
              | 81 |  | -    user_id = models.CharField(_(u'user_id'), max_length=32, blank=True, null=True, help_text=u'用户唯一标识', db_index=True) | 
            
            
              |  | 97 | +    user_id = models.CharField(_(u'user_id'), max_length=32, | 
            
            
              |  | 98 | +                               blank=True, null=True, help_text=u'用户唯一标识', db_index=True) | 
            
            
              | 82 | 99 |   | 
            
            
              | 83 | 100 |      # 镜头配件信息 | 
            
            
              | 84 |  | -    front_cap_status = models.BooleanField(_(u'front_cap_status'), default=False, help_text=u'前盖状态') | 
            
            
              | 85 |  | -    rear_cap_status = models.BooleanField(_(u'rear_cap_status'), default=False, help_text=u'后盖状态') | 
            
            
              | 86 |  | -    lens_hood_status = models.BooleanField(_(u'lens_hood_status'), default=False, help_text=u'遮光罩状态') | 
            
            
              | 87 |  | -    tripod_ring_status = models.BooleanField(_(u'tripod_ring_status'), default=False, help_text=u'脚架环状态') | 
            
            
              | 88 |  | -    appearance_performance_status = models.BooleanField(_(u'appearance_performance_status'), default=False, help_text=u'外观性能状态') | 
            
            
              |  | 101 | +    front_cap_status = models.BooleanField( | 
            
            
              |  | 102 | +        _(u'front_cap_status'), default=False, help_text=u'前盖状态') | 
            
            
              |  | 103 | +    rear_cap_status = models.BooleanField( | 
            
            
              |  | 104 | +        _(u'rear_cap_status'), default=False, help_text=u'后盖状态') | 
            
            
              |  | 105 | +    lens_hood_status = models.BooleanField( | 
            
            
              |  | 106 | +        _(u'lens_hood_status'), default=False, help_text=u'遮光罩状态') | 
            
            
              |  | 107 | +    tripod_ring_status = models.BooleanField( | 
            
            
              |  | 108 | +        _(u'tripod_ring_status'), default=False, help_text=u'脚架环状态') | 
            
            
              |  | 109 | +    appearance_performance_status = models.BooleanField( | 
            
            
              |  | 110 | +        _(u'appearance_performance_status'), default=False, help_text=u'外观性能状态') | 
            
            
              | 89 | 111 |   | 
            
            
              | 90 | 112 |      # 身份证信息 | 
            
            
              | 91 |  | -    identity_card_number = models.CharField(_(u'identity_card_number'), max_length=32, blank=True, null=True, help_text=u'身份证号') | 
            
            
              | 92 |  | -    identity_card_name = models.CharField(_(u'identity_card_name'), max_length=32, blank=True, null=True, help_text=u'身份证姓名') | 
            
            
              |  | 113 | +    identity_card_number = models.CharField( | 
            
            
              |  | 114 | +        _(u'identity_card_number'), max_length=32, blank=True, null=True, help_text=u'身份证号') | 
            
            
              |  | 115 | +    identity_card_name = models.CharField( | 
            
            
              |  | 116 | +        _(u'identity_card_name'), max_length=32, blank=True, null=True, help_text=u'身份证姓名') | 
            
            
              | 93 | 117 |   | 
            
            
              | 94 | 118 |      # 邮寄信息 | 
            
            
              | 95 |  | -    name = models.CharField(_(u'name'), max_length=255, blank=True, null=True, help_text=u'用户姓名') | 
            
            
              | 96 |  | -    phone = models.CharField(_(u'phone'), max_length=11, blank=True, null=True, help_text=u'用户电话') | 
            
            
              | 97 |  | -    location = models.CharField(_(u'location'), max_length=255, blank=True, null=True, help_text=u'用户地址') | 
            
            
              | 98 |  | -    postcode = models.CharField(_(u'postcode'), max_length=255, blank=True, null=True, help_text=u'用户邮政编码') | 
            
            
              |  | 119 | +    name = models.CharField(_(u'name'), max_length=255, | 
            
            
              |  | 120 | +                            blank=True, null=True, help_text=u'用户姓名') | 
            
            
              |  | 121 | +    phone = models.CharField(_(u'phone'), max_length=11, | 
            
            
              |  | 122 | +                             blank=True, null=True, help_text=u'用户电话') | 
            
            
              |  | 123 | +    location = models.CharField( | 
            
            
              |  | 124 | +        _(u'location'), max_length=255, blank=True, null=True, help_text=u'用户地址') | 
            
            
              |  | 125 | +    postcode = models.CharField( | 
            
            
              |  | 126 | +        _(u'postcode'), max_length=255, blank=True, null=True, help_text=u'用户邮政编码') | 
            
            
              | 99 | 127 |   | 
            
            
              | 100 | 128 |      # 租赁信息 | 
            
            
              | 101 |  | -    purpose = models.CharField(_(u'purpose'), max_length=255, blank=True, null=True, help_text=u'用途') | 
            
            
              | 102 |  | -    return_date = models.DateField(_(u'return_date'), blank=True, null=True, help_text=u'预定归还日期') | 
            
            
              |  | 129 | +    purpose = models.CharField( | 
            
            
              |  | 130 | +        _(u'purpose'), max_length=255, blank=True, null=True, help_text=u'用途') | 
            
            
              |  | 131 | +    return_date = models.DateField( | 
            
            
              |  | 132 | +        _(u'return_date'), blank=True, null=True, help_text=u'预定归还日期') | 
            
            
              | 103 | 133 |   | 
            
            
              | 104 | 134 |      # 公司 =》 用户 | 
            
            
              | 105 |  | -    express_name = models.CharField(_(u'express_name'), max_length=255, blank=True, null=True, help_text=u'快递公司') | 
            
            
              | 106 |  | -    express_com = models.CharField(_(u'express_com'), max_length=255, blank=True, null=True, help_text=u'快递编码') | 
            
            
              | 107 |  | -    tracking_number = models.CharField(_(u'tracking_number'), max_length=255, blank=True, null=True, help_text=u'快递单号') | 
            
            
              | 108 |  | -    tracking_info = JSONField(_(u'tracking_info'), blank=True, null=True, default={}, help_text=u'快递信息') | 
            
            
              | 109 |  | -    tracking_signed = models.BooleanField(_(u'tracking_signed'), default=False, help_text=u'快递是否已签收') | 
            
            
              | 110 |  | -    tracking_signed_images = JSONField(_(u'tracking_signed_images'), blank=True, null=True, default=[], help_text=u'快递签收图片列表') | 
            
            
              |  | 135 | +    express_name = models.CharField( | 
            
            
              |  | 136 | +        _(u'express_name'), max_length=255, blank=True, null=True, help_text=u'快递公司') | 
            
            
              |  | 137 | +    express_com = models.CharField( | 
            
            
              |  | 138 | +        _(u'express_com'), max_length=255, blank=True, null=True, help_text=u'快递编码') | 
            
            
              |  | 139 | +    tracking_number = models.CharField( | 
            
            
              |  | 140 | +        _(u'tracking_number'), max_length=255, blank=True, null=True, help_text=u'快递单号') | 
            
            
              |  | 141 | +    tracking_info = JSONField( | 
            
            
              |  | 142 | +        _(u'tracking_info'), blank=True, null=True, default={}, help_text=u'快递信息') | 
            
            
              |  | 143 | +    tracking_signed = models.BooleanField( | 
            
            
              |  | 144 | +        _(u'tracking_signed'), default=False, help_text=u'快递是否已签收') | 
            
            
              |  | 145 | +    tracking_signed_images = JSONField( | 
            
            
              |  | 146 | +        _(u'tracking_signed_images'), blank=True, null=True, default=[], help_text=u'快递签收图片列表') | 
            
            
              | 111 | 147 |   | 
            
            
              | 112 | 148 |      # 用户 =》 公司 | 
            
            
              | 113 |  | -    back_express_name = models.CharField(_(u'back_express_name'), max_length=255, blank=True, null=True, help_text=u'寄回快递公司') | 
            
            
              | 114 |  | -    back_express_com = models.CharField(_(u'back_express_com'), max_length=255, blank=True, null=True, help_text=u'寄回快递编码') | 
            
            
              | 115 |  | -    back_tracking_number = models.CharField(_(u'back_tracking_number'), max_length=255, blank=True, null=True, help_text=u'寄回快递单号') | 
            
            
              | 116 |  | -    back_tracking_info = JSONField(_(u'back_tracking_info'), blank=True, null=True, default={}, help_text=u'寄回快递信息') | 
            
            
              | 117 |  | -    back_tracking_signed = models.BooleanField(_(u'back_tracking_signed'), default=False, help_text=u'寄回快递是否已签收') | 
            
            
              | 118 |  | - | 
            
            
              | 119 |  | -    audit_status = models.IntegerField(_(u'audit_status'), choices=AUDIT_STATUS, default=0, help_text=u'审批状态', db_index=True) | 
            
            
              |  | 149 | +    back_express_name = models.CharField( | 
            
            
              |  | 150 | +        _(u'back_express_name'), max_length=255, blank=True, null=True, help_text=u'寄回快递公司') | 
            
            
              |  | 151 | +    back_express_com = models.CharField( | 
            
            
              |  | 152 | +        _(u'back_express_com'), max_length=255, blank=True, null=True, help_text=u'寄回快递编码') | 
            
            
              |  | 153 | +    back_tracking_number = models.CharField( | 
            
            
              |  | 154 | +        _(u'back_tracking_number'), max_length=255, blank=True, null=True, help_text=u'寄回快递单号') | 
            
            
              |  | 155 | +    back_tracking_info = JSONField( | 
            
            
              |  | 156 | +        _(u'back_tracking_info'), blank=True, null=True, default={}, help_text=u'寄回快递信息') | 
            
            
              |  | 157 | +    back_tracking_signed = models.BooleanField( | 
            
            
              |  | 158 | +        _(u'back_tracking_signed'), default=False, help_text=u'寄回快递是否已签收') | 
            
            
              |  | 159 | + | 
            
            
              |  | 160 | +    audit_status = models.IntegerField( | 
            
            
              |  | 161 | +        _(u'audit_status'), choices=AUDIT_STATUS, default=0, help_text=u'审批状态', db_index=True) | 
            
            
              | 120 | 162 |      # REQUEST_STATUS = ( | 
            
            
              | 121 | 163 |      #     (0, u'寄出'), | 
            
            
              | 122 | 164 |      #     (1, u'寄出已签收'), | 
            
            
            
            
              |  |  | @@ -124,10 +166,13 @@ class TenancyShotRequestInfo(BaseModelMixin): | 
            
            
              | 124 | 166 |      #     (3, u'寄回已签收并检查无损坏'), | 
            
            
              | 125 | 167 |      # ) | 
            
            
              | 126 | 168 |      # request_status = models.IntegerField(_(u'request_status'), choices=REQUEST_STATUS, default=0, help_text=u'租借申请状态') | 
            
            
              | 127 |  | -    request_status = models.CharField(_(u'request_status'), max_length=16, default='', help_text=u'租借申请状态') | 
            
            
              | 128 |  | -    request_status_at = JSONField(_(u'request_status_at'), blank=True, null=True, default={}, help_text=u'租借申请状态变更时间') | 
            
            
              |  | 169 | +    request_status = models.CharField( | 
            
            
              |  | 170 | +        _(u'request_status'), max_length=16, default='', help_text=u'租借申请状态') | 
            
            
              |  | 171 | +    request_status_at = JSONField( | 
            
            
              |  | 172 | +        _(u'request_status_at'), blank=True, null=True, default={}, help_text=u'租借申请状态变更时间') | 
            
            
              | 129 | 173 |   | 
            
            
              | 130 |  | -    remark = models.CharField(_(u'remark'), max_length=256, default='', help_text=u'备注') | 
            
            
              |  | 174 | +    remark = models.CharField( | 
            
            
              |  | 175 | +        _(u'remark'), max_length=256, default='', help_text=u'备注') | 
            
            
              | 131 | 176 |   | 
            
            
              | 132 | 177 |      class Meta: | 
            
            
              | 133 | 178 |          verbose_name = _(u'租赁镜头申请信息') | 
            
            
            
            
              |  |  | @@ -185,7 +230,7 @@ class TenancyShotRequestInfo(BaseModelMixin): | 
            
            
              | 185 | 230 |              'back_tracking_signed': self.back_tracking_signed, | 
            
            
              | 186 | 231 |              'audit_status': self.audit_status, | 
            
            
              | 187 | 232 |              'request_status': self.request_status, | 
            
            
              | 188 |  | -            'request_status_at': {k: tc.local_date_string(utc_dt=tc.string_to_utc_datetime(v, format='%Y-%m-%dT%H:%M:%S.%fZ')) for k, v in self.request_status_at.items()}, | 
            
            
              |  | 233 | +            'request_status_at': {k: tc.local_date_string(utc_dt=tc.string_to_utc_datetime(v, format='%Y-%m-%d %H:%M:%S')) for k, v in self.request_status_at.items()}, | 
            
            
              | 189 | 234 |              'created_at': tc.local_date_string(utc_dt=self.created_at), | 
            
            
              | 190 | 235 |              'remark': self.remark, | 
            
            
              | 191 | 236 |          } | 
            
            
            
            
              |  |  | @@ -198,7 +243,8 @@ class TenancyShotRequestInfo(BaseModelMixin): | 
            
            
              | 198 | 243 |              admin = None | 
            
            
              | 199 | 244 |   | 
            
            
              | 200 | 245 |          try: | 
            
            
              | 201 |  | -            shot = TenancyShotInfo.objects.get(shot_id=self.shot_id, status=True) | 
            
            
              |  | 246 | +            shot = TenancyShotInfo.objects.get( | 
            
            
              |  | 247 | +                shot_id=self.shot_id, status=True) | 
            
            
              | 202 | 248 |          except TenancyShotInfo.DoesNotExist: | 
            
            
              | 203 | 249 |              shot = None | 
            
            
              | 204 | 250 |   |