周睿 1 год назад
Родитель
Сommit
3d2d41f865

+ 64 - 0
app_business/lib/generated/base.pb.dart

@@ -5763,6 +5763,70 @@ class CourseBaseInfo extends $pb.GeneratedMessage {
   $core.List<ToControlPoint> get controlPointSortedList => $_getList(2);
 }
 
+class CourseBase extends $pb.GeneratedMessage {
+  factory CourseBase({
+    $core.int? cId,
+    $core.String? cName,
+  }) {
+    final $result = create();
+    if (cId != null) {
+      $result.cId = cId;
+    }
+    if (cName != null) {
+      $result.cName = cName;
+    }
+    return $result;
+  }
+  CourseBase._() : super();
+  factory CourseBase.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r);
+  factory CourseBase.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r);
+
+  static final $pb.BuilderInfo _i = $pb.BuilderInfo(_omitMessageNames ? '' : 'CourseBase', package: const $pb.PackageName(_omitMessageNames ? '' : 'base.v1'), createEmptyInstance: create)
+    ..a<$core.int>(1, _omitFieldNames ? '' : 'cId', $pb.PbFieldType.O3, protoName: 'cId')
+    ..aOS(2, _omitFieldNames ? '' : 'cName', protoName: 'cName')
+    ..hasRequiredFields = false
+  ;
+
+  @$core.Deprecated(
+  'Using this can add significant overhead to your binary. '
+  'Use [GeneratedMessageGenericExtensions.deepCopy] instead. '
+  'Will be removed in next major version')
+  CourseBase clone() => CourseBase()..mergeFromMessage(this);
+  @$core.Deprecated(
+  'Using this can add significant overhead to your binary. '
+  'Use [GeneratedMessageGenericExtensions.rebuild] instead. '
+  'Will be removed in next major version')
+  CourseBase copyWith(void Function(CourseBase) updates) => super.copyWith((message) => updates(message as CourseBase)) as CourseBase;
+
+  $pb.BuilderInfo get info_ => _i;
+
+  @$core.pragma('dart2js:noInline')
+  static CourseBase create() => CourseBase._();
+  CourseBase createEmptyInstance() => create();
+  static $pb.PbList<CourseBase> createRepeated() => $pb.PbList<CourseBase>();
+  @$core.pragma('dart2js:noInline')
+  static CourseBase getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor<CourseBase>(create);
+  static CourseBase? _defaultInstance;
+
+  @$pb.TagNumber(1)
+  $core.int get cId => $_getIZ(0);
+  @$pb.TagNumber(1)
+  set cId($core.int v) { $_setSignedInt32(0, v); }
+  @$pb.TagNumber(1)
+  $core.bool hasCId() => $_has(0);
+  @$pb.TagNumber(1)
+  void clearCId() => clearField(1);
+
+  @$pb.TagNumber(2)
+  $core.String get cName => $_getSZ(1);
+  @$pb.TagNumber(2)
+  set cName($core.String v) { $_setString(1, v); }
+  @$pb.TagNumber(2)
+  $core.bool hasCName() => $_has(1);
+  @$pb.TagNumber(2)
+  void clearCName() => clearField(2);
+}
+
 class ToControlPoint extends $pb.GeneratedMessage {
   factory ToControlPoint({
     $fixnum.Int64? id,

+ 13 - 0
app_business/lib/generated/base.pbjson.dart

@@ -1338,6 +1338,19 @@ final $typed_data.Uint8List courseBaseInfoDescriptor = $convert.base64Decode(
     'FtZRgCIAEoCVIKQ291cnNlTmFtZRJPChZjb250cm9sUG9pbnRTb3J0ZWRMaXN0GAMgAygLMhcu'
     'YmFzZS52MS5Ub0NvbnRyb2xQb2ludFIWY29udHJvbFBvaW50U29ydGVkTGlzdA==');
 
+@$core.Deprecated('Use courseBaseDescriptor instead')
+const CourseBase$json = {
+  '1': 'CourseBase',
+  '2': [
+    {'1': 'cId', '3': 1, '4': 1, '5': 5, '10': 'cId'},
+    {'1': 'cName', '3': 2, '4': 1, '5': 9, '10': 'cName'},
+  ],
+};
+
+/// Descriptor for `CourseBase`. Decode as a `google.protobuf.DescriptorProto`.
+final $typed_data.Uint8List courseBaseDescriptor = $convert.base64Decode(
+    'CgpDb3Vyc2VCYXNlEhAKA2NJZBgBIAEoBVIDY0lkEhQKBWNOYW1lGAIgASgJUgVjTmFtZQ==');
+
 @$core.Deprecated('Use toControlPointDescriptor instead')
 const ToControlPoint$json = {
   '1': 'ToControlPoint',

+ 217 - 56
app_business/lib/generated/track_offical.pb.dart

@@ -17,13 +17,120 @@ import 'package:protobuf/protobuf.dart' as $pb;
 import 'base.pb.dart' as $0;
 import 'google/protobuf/timestamp.pb.dart' as $2;
 
+class ToCourseChackMatchRequest extends $pb.GeneratedMessage {
+  factory ToCourseChackMatchRequest({
+    $core.int? id,
+    $core.int? cId,
+  }) {
+    final $result = create();
+    if (id != null) {
+      $result.id = id;
+    }
+    if (cId != null) {
+      $result.cId = cId;
+    }
+    return $result;
+  }
+  ToCourseChackMatchRequest._() : super();
+  factory ToCourseChackMatchRequest.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r);
+  factory ToCourseChackMatchRequest.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r);
+
+  static final $pb.BuilderInfo _i = $pb.BuilderInfo(_omitMessageNames ? '' : 'ToCourseChackMatchRequest', package: const $pb.PackageName(_omitMessageNames ? '' : 'to.v1'), createEmptyInstance: create)
+    ..a<$core.int>(1, _omitFieldNames ? '' : 'id', $pb.PbFieldType.O3)
+    ..a<$core.int>(3, _omitFieldNames ? '' : 'cId', $pb.PbFieldType.O3, protoName: 'cId')
+    ..hasRequiredFields = false
+  ;
+
+  @$core.Deprecated(
+  'Using this can add significant overhead to your binary. '
+  'Use [GeneratedMessageGenericExtensions.deepCopy] instead. '
+  'Will be removed in next major version')
+  ToCourseChackMatchRequest clone() => ToCourseChackMatchRequest()..mergeFromMessage(this);
+  @$core.Deprecated(
+  'Using this can add significant overhead to your binary. '
+  'Use [GeneratedMessageGenericExtensions.rebuild] instead. '
+  'Will be removed in next major version')
+  ToCourseChackMatchRequest copyWith(void Function(ToCourseChackMatchRequest) updates) => super.copyWith((message) => updates(message as ToCourseChackMatchRequest)) as ToCourseChackMatchRequest;
+
+  $pb.BuilderInfo get info_ => _i;
+
+  @$core.pragma('dart2js:noInline')
+  static ToCourseChackMatchRequest create() => ToCourseChackMatchRequest._();
+  ToCourseChackMatchRequest createEmptyInstance() => create();
+  static $pb.PbList<ToCourseChackMatchRequest> createRepeated() => $pb.PbList<ToCourseChackMatchRequest>();
+  @$core.pragma('dart2js:noInline')
+  static ToCourseChackMatchRequest getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor<ToCourseChackMatchRequest>(create);
+  static ToCourseChackMatchRequest? _defaultInstance;
+
+  @$pb.TagNumber(1)
+  $core.int get id => $_getIZ(0);
+  @$pb.TagNumber(1)
+  set id($core.int v) { $_setSignedInt32(0, v); }
+  @$pb.TagNumber(1)
+  $core.bool hasId() => $_has(0);
+  @$pb.TagNumber(1)
+  void clearId() => clearField(1);
+
+  @$pb.TagNumber(3)
+  $core.int get cId => $_getIZ(1);
+  @$pb.TagNumber(3)
+  set cId($core.int v) { $_setSignedInt32(1, v); }
+  @$pb.TagNumber(3)
+  $core.bool hasCId() => $_has(1);
+  @$pb.TagNumber(3)
+  void clearCId() => clearField(3);
+}
+
+class ToActivityListReply extends $pb.GeneratedMessage {
+  factory ToActivityListReply({
+    $core.Iterable<$0.ToActionBasicInfo>? list,
+  }) {
+    final $result = create();
+    if (list != null) {
+      $result.list.addAll(list);
+    }
+    return $result;
+  }
+  ToActivityListReply._() : super();
+  factory ToActivityListReply.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r);
+  factory ToActivityListReply.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r);
+
+  static final $pb.BuilderInfo _i = $pb.BuilderInfo(_omitMessageNames ? '' : 'ToActivityListReply', package: const $pb.PackageName(_omitMessageNames ? '' : 'to.v1'), createEmptyInstance: create)
+    ..pc<$0.ToActionBasicInfo>(1, _omitFieldNames ? '' : 'list', $pb.PbFieldType.PM, subBuilder: $0.ToActionBasicInfo.create)
+    ..hasRequiredFields = false
+  ;
+
+  @$core.Deprecated(
+  'Using this can add significant overhead to your binary. '
+  'Use [GeneratedMessageGenericExtensions.deepCopy] instead. '
+  'Will be removed in next major version')
+  ToActivityListReply clone() => ToActivityListReply()..mergeFromMessage(this);
+  @$core.Deprecated(
+  'Using this can add significant overhead to your binary. '
+  'Use [GeneratedMessageGenericExtensions.rebuild] instead. '
+  'Will be removed in next major version')
+  ToActivityListReply copyWith(void Function(ToActivityListReply) updates) => super.copyWith((message) => updates(message as ToActivityListReply)) as ToActivityListReply;
+
+  $pb.BuilderInfo get info_ => _i;
+
+  @$core.pragma('dart2js:noInline')
+  static ToActivityListReply create() => ToActivityListReply._();
+  ToActivityListReply createEmptyInstance() => create();
+  static $pb.PbList<ToActivityListReply> createRepeated() => $pb.PbList<ToActivityListReply>();
+  @$core.pragma('dart2js:noInline')
+  static ToActivityListReply getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor<ToActivityListReply>(create);
+  static ToActivityListReply? _defaultInstance;
+
+  @$pb.TagNumber(1)
+  $core.List<$0.ToActionBasicInfo> get list => $_getList(0);
+}
+
 class ToMatchRegusterEditRequest extends $pb.GeneratedMessage {
   factory ToMatchRegusterEditRequest({
     $core.int? id,
     $core.String? regName,
     $2.Timestamp? startAt,
     $2.Timestamp? stopAt,
-    $core.int? actId,
     $core.bool? isQueryPwd,
     $core.String? queryPasswd,
   }) {
@@ -40,9 +147,6 @@ class ToMatchRegusterEditRequest extends $pb.GeneratedMessage {
     if (stopAt != null) {
       $result.stopAt = stopAt;
     }
-    if (actId != null) {
-      $result.actId = actId;
-    }
     if (isQueryPwd != null) {
       $result.isQueryPwd = isQueryPwd;
     }
@@ -60,9 +164,8 @@ class ToMatchRegusterEditRequest extends $pb.GeneratedMessage {
     ..aOS(2, _omitFieldNames ? '' : 'regName', protoName: 'regName')
     ..aOM<$2.Timestamp>(3, _omitFieldNames ? '' : 'startAt', subBuilder: $2.Timestamp.create)
     ..aOM<$2.Timestamp>(4, _omitFieldNames ? '' : 'stopAt', subBuilder: $2.Timestamp.create)
-    ..a<$core.int>(5, _omitFieldNames ? '' : 'actId', $pb.PbFieldType.O3, protoName: 'actId')
-    ..aOB(6, _omitFieldNames ? '' : 'isQueryPwd', protoName: 'isQueryPwd')
-    ..aOS(7, _omitFieldNames ? '' : 'queryPasswd', protoName: 'queryPasswd')
+    ..aOB(5, _omitFieldNames ? '' : 'isQueryPwd', protoName: 'isQueryPwd')
+    ..aOS(6, _omitFieldNames ? '' : 'queryPasswd', protoName: 'queryPasswd')
     ..hasRequiredFields = false
   ;
 
@@ -127,37 +230,29 @@ class ToMatchRegusterEditRequest extends $pb.GeneratedMessage {
   @$pb.TagNumber(4)
   $2.Timestamp ensureStopAt() => $_ensure(3);
 
+  /// int32 actId = 5; //选择活动id
   @$pb.TagNumber(5)
-  $core.int get actId => $_getIZ(4);
+  $core.bool get isQueryPwd => $_getBF(4);
   @$pb.TagNumber(5)
-  set actId($core.int v) { $_setSignedInt32(4, v); }
+  set isQueryPwd($core.bool v) { $_setBool(4, v); }
   @$pb.TagNumber(5)
-  $core.bool hasActId() => $_has(4);
+  $core.bool hasIsQueryPwd() => $_has(4);
   @$pb.TagNumber(5)
-  void clearActId() => clearField(5);
+  void clearIsQueryPwd() => clearField(5);
 
   @$pb.TagNumber(6)
-  $core.bool get isQueryPwd => $_getBF(5);
+  $core.String get queryPasswd => $_getSZ(5);
   @$pb.TagNumber(6)
-  set isQueryPwd($core.bool v) { $_setBool(5, v); }
+  set queryPasswd($core.String v) { $_setString(5, v); }
   @$pb.TagNumber(6)
-  $core.bool hasIsQueryPwd() => $_has(5);
+  $core.bool hasQueryPasswd() => $_has(5);
   @$pb.TagNumber(6)
-  void clearIsQueryPwd() => clearField(6);
-
-  @$pb.TagNumber(7)
-  $core.String get queryPasswd => $_getSZ(6);
-  @$pb.TagNumber(7)
-  set queryPasswd($core.String v) { $_setString(6, v); }
-  @$pb.TagNumber(7)
-  $core.bool hasQueryPasswd() => $_has(6);
-  @$pb.TagNumber(7)
-  void clearQueryPasswd() => clearField(7);
+  void clearQueryPasswd() => clearField(6);
 }
 
-class ToActivityListReply extends $pb.GeneratedMessage {
-  factory ToActivityListReply({
-    $core.Iterable<$0.ToActionBasicInfo>? list,
+class ToCourseListReply extends $pb.GeneratedMessage {
+  factory ToCourseListReply({
+    $core.Iterable<$0.CourseBase>? list,
   }) {
     final $result = create();
     if (list != null) {
@@ -165,12 +260,12 @@ class ToActivityListReply extends $pb.GeneratedMessage {
     }
     return $result;
   }
-  ToActivityListReply._() : super();
-  factory ToActivityListReply.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r);
-  factory ToActivityListReply.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r);
+  ToCourseListReply._() : super();
+  factory ToCourseListReply.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r);
+  factory ToCourseListReply.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r);
 
-  static final $pb.BuilderInfo _i = $pb.BuilderInfo(_omitMessageNames ? '' : 'ToActivityListReply', package: const $pb.PackageName(_omitMessageNames ? '' : 'to.v1'), createEmptyInstance: create)
-    ..pc<$0.ToActionBasicInfo>(1, _omitFieldNames ? '' : 'list', $pb.PbFieldType.PM, subBuilder: $0.ToActionBasicInfo.create)
+  static final $pb.BuilderInfo _i = $pb.BuilderInfo(_omitMessageNames ? '' : 'ToCourseListReply', package: const $pb.PackageName(_omitMessageNames ? '' : 'to.v1'), createEmptyInstance: create)
+    ..pc<$0.CourseBase>(1, _omitFieldNames ? '' : 'list', $pb.PbFieldType.PM, subBuilder: $0.CourseBase.create)
     ..hasRequiredFields = false
   ;
 
@@ -178,25 +273,25 @@ class ToActivityListReply extends $pb.GeneratedMessage {
   'Using this can add significant overhead to your binary. '
   'Use [GeneratedMessageGenericExtensions.deepCopy] instead. '
   'Will be removed in next major version')
-  ToActivityListReply clone() => ToActivityListReply()..mergeFromMessage(this);
+  ToCourseListReply clone() => ToCourseListReply()..mergeFromMessage(this);
   @$core.Deprecated(
   'Using this can add significant overhead to your binary. '
   'Use [GeneratedMessageGenericExtensions.rebuild] instead. '
   'Will be removed in next major version')
-  ToActivityListReply copyWith(void Function(ToActivityListReply) updates) => super.copyWith((message) => updates(message as ToActivityListReply)) as ToActivityListReply;
+  ToCourseListReply copyWith(void Function(ToCourseListReply) updates) => super.copyWith((message) => updates(message as ToCourseListReply)) as ToCourseListReply;
 
   $pb.BuilderInfo get info_ => _i;
 
   @$core.pragma('dart2js:noInline')
-  static ToActivityListReply create() => ToActivityListReply._();
-  ToActivityListReply createEmptyInstance() => create();
-  static $pb.PbList<ToActivityListReply> createRepeated() => $pb.PbList<ToActivityListReply>();
+  static ToCourseListReply create() => ToCourseListReply._();
+  ToCourseListReply createEmptyInstance() => create();
+  static $pb.PbList<ToCourseListReply> createRepeated() => $pb.PbList<ToCourseListReply>();
   @$core.pragma('dart2js:noInline')
-  static ToActivityListReply getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor<ToActivityListReply>(create);
-  static ToActivityListReply? _defaultInstance;
+  static ToCourseListReply getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor<ToCourseListReply>(create);
+  static ToCourseListReply? _defaultInstance;
 
   @$pb.TagNumber(1)
-  $core.List<$0.ToActionBasicInfo> get list => $_getList(0);
+  $core.List<$0.CourseBase> get list => $_getList(0);
 }
 
 class ToMatchRegusterListRequest extends $pb.GeneratedMessage {
@@ -435,18 +530,31 @@ class MatchRegusterInfo extends $pb.GeneratedMessage {
   $core.List<ToChackInsInfo> get userList => $_getList(6);
 }
 
+///
+/// 场控段赛事控制逻辑:
+/// 1.如果cId等于0,isStart等于false,表示未分发线路,路线显示分发按钮,状态显示未分发;
+/// 2.如果cId大于0,isStart等于false,表示已分发线路但管理员未开始,状态栏是开始按钮;
+/// 3.如果cId大于0,isStart等于true,mState等于0(玩家端未开始)或1(玩家端已开始但没打开始点),表示已分发线路且管理员已开始但用户没有打开始点,状态显示已开始;
+/// 4.如果cId大于0,isStart等于true,mState等于2,表示已分发线路且管理员已开始且用户已打开始点,状态显示已开始,操作显示结束按钮;
+/// 5.如果cId大于0,isStart等于true,mState大于等于3,表示已分发线路且管理员已开始且用户已结束比赛,状态显示已结束,操作显示重赛按钮
+/// 6:点击重赛后,跟1情况一样
+/// 7:是否显示删除按钮由punchCpNum字段控制,punchCpNum等于0显示删除按钮,大于0显示其他按钮;
 class ToChackInsInfo extends $pb.GeneratedMessage {
   factory ToChackInsInfo({
-    $core.int? marId,
+    $core.int? mciId,
     $core.int? oId,
     $core.String? nickname,
     $core.String? phone,
     $core.String? chackInsTime,
-    $core.bool? isAllowDel,
+    $core.String? cName,
+    $core.int? cId,
+    $core.int? mState,
+    $core.bool? isStart,
+    $core.int? punchCpNum,
   }) {
     final $result = create();
-    if (marId != null) {
-      $result.marId = marId;
+    if (mciId != null) {
+      $result.mciId = mciId;
     }
     if (oId != null) {
       $result.oId = oId;
@@ -460,8 +568,20 @@ class ToChackInsInfo extends $pb.GeneratedMessage {
     if (chackInsTime != null) {
       $result.chackInsTime = chackInsTime;
     }
-    if (isAllowDel != null) {
-      $result.isAllowDel = isAllowDel;
+    if (cName != null) {
+      $result.cName = cName;
+    }
+    if (cId != null) {
+      $result.cId = cId;
+    }
+    if (mState != null) {
+      $result.mState = mState;
+    }
+    if (isStart != null) {
+      $result.isStart = isStart;
+    }
+    if (punchCpNum != null) {
+      $result.punchCpNum = punchCpNum;
     }
     return $result;
   }
@@ -470,12 +590,16 @@ class ToChackInsInfo extends $pb.GeneratedMessage {
   factory ToChackInsInfo.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r);
 
   static final $pb.BuilderInfo _i = $pb.BuilderInfo(_omitMessageNames ? '' : 'ToChackInsInfo', package: const $pb.PackageName(_omitMessageNames ? '' : 'to.v1'), createEmptyInstance: create)
-    ..a<$core.int>(1, _omitFieldNames ? '' : 'marId', $pb.PbFieldType.O3, protoName: 'marId')
+    ..a<$core.int>(1, _omitFieldNames ? '' : 'mciId', $pb.PbFieldType.O3, protoName: 'mciId')
     ..a<$core.int>(2, _omitFieldNames ? '' : 'oId', $pb.PbFieldType.O3, protoName: 'oId')
     ..aOS(3, _omitFieldNames ? '' : 'nickname')
     ..aOS(4, _omitFieldNames ? '' : 'phone')
     ..aOS(5, _omitFieldNames ? '' : 'chackInsTime', protoName: 'chackInsTime')
-    ..aOB(6, _omitFieldNames ? '' : 'isAllowDel', protoName: 'isAllowDel')
+    ..aOS(6, _omitFieldNames ? '' : 'cName', protoName: 'cName')
+    ..a<$core.int>(7, _omitFieldNames ? '' : 'cId', $pb.PbFieldType.O3, protoName: 'cId')
+    ..a<$core.int>(8, _omitFieldNames ? '' : 'mState', $pb.PbFieldType.O3, protoName: 'mState')
+    ..aOB(9, _omitFieldNames ? '' : 'isStart', protoName: 'isStart')
+    ..a<$core.int>(10, _omitFieldNames ? '' : 'punchCpNum', $pb.PbFieldType.O3, protoName: 'punchCpNum')
     ..hasRequiredFields = false
   ;
 
@@ -501,13 +625,13 @@ class ToChackInsInfo extends $pb.GeneratedMessage {
   static ToChackInsInfo? _defaultInstance;
 
   @$pb.TagNumber(1)
-  $core.int get marId => $_getIZ(0);
+  $core.int get mciId => $_getIZ(0);
   @$pb.TagNumber(1)
-  set marId($core.int v) { $_setSignedInt32(0, v); }
+  set mciId($core.int v) { $_setSignedInt32(0, v); }
   @$pb.TagNumber(1)
-  $core.bool hasMarId() => $_has(0);
+  $core.bool hasMciId() => $_has(0);
   @$pb.TagNumber(1)
-  void clearMarId() => clearField(1);
+  void clearMciId() => clearField(1);
 
   @$pb.TagNumber(2)
   $core.int get oId => $_getIZ(1);
@@ -545,14 +669,51 @@ class ToChackInsInfo extends $pb.GeneratedMessage {
   @$pb.TagNumber(5)
   void clearChackInsTime() => clearField(5);
 
+  /// bool    isAllowDel = 6; //是否允许删除,如果否删除按钮是不可用
   @$pb.TagNumber(6)
-  $core.bool get isAllowDel => $_getBF(5);
+  $core.String get cName => $_getSZ(5);
   @$pb.TagNumber(6)
-  set isAllowDel($core.bool v) { $_setBool(5, v); }
+  set cName($core.String v) { $_setString(5, v); }
   @$pb.TagNumber(6)
-  $core.bool hasIsAllowDel() => $_has(5);
+  $core.bool hasCName() => $_has(5);
   @$pb.TagNumber(6)
-  void clearIsAllowDel() => clearField(6);
+  void clearCName() => clearField(6);
+
+  @$pb.TagNumber(7)
+  $core.int get cId => $_getIZ(6);
+  @$pb.TagNumber(7)
+  set cId($core.int v) { $_setSignedInt32(6, v); }
+  @$pb.TagNumber(7)
+  $core.bool hasCId() => $_has(6);
+  @$pb.TagNumber(7)
+  void clearCId() => clearField(7);
+
+  @$pb.TagNumber(8)
+  $core.int get mState => $_getIZ(7);
+  @$pb.TagNumber(8)
+  set mState($core.int v) { $_setSignedInt32(7, v); }
+  @$pb.TagNumber(8)
+  $core.bool hasMState() => $_has(7);
+  @$pb.TagNumber(8)
+  void clearMState() => clearField(8);
+
+  @$pb.TagNumber(9)
+  $core.bool get isStart => $_getBF(8);
+  @$pb.TagNumber(9)
+  set isStart($core.bool v) { $_setBool(8, v); }
+  @$pb.TagNumber(9)
+  $core.bool hasIsStart() => $_has(8);
+  @$pb.TagNumber(9)
+  void clearIsStart() => clearField(9);
+
+  @$pb.TagNumber(10)
+  $core.int get punchCpNum => $_getIZ(9);
+  @$pb.TagNumber(10)
+  set punchCpNum($core.int v) { $_setSignedInt32(9, v); }
+  @$pb.TagNumber(10)
+  $core.bool hasPunchCpNum() => $_has(9);
+  @$pb.TagNumber(10)
+  void clearPunchCpNum() => clearField(10);
 }
 
 class ToMatchRegusterAddRequest extends $pb.GeneratedMessage {

+ 160 - 0
app_business/lib/generated/track_offical.pbgrpc.dart

@@ -106,6 +106,38 @@ class ApiToClient extends $grpc.Client {
       '/to.v1.ApiTo/MatchChackInsDel',
       ($0.IdRequest value) => value.writeToBuffer(),
       ($core.List<$core.int> value) => $0.DefaultReply.fromBuffer(value));
+  static final _$toCourseSelectList = $grpc.ClientMethod<$0.IdRequest, $1.ToCourseListReply>(
+      '/to.v1.ApiTo/ToCourseSelectList',
+      ($0.IdRequest value) => value.writeToBuffer(),
+      ($core.List<$core.int> value) => $1.ToCourseListReply.fromBuffer(value));
+  static final _$toCourseChackMatch = $grpc.ClientMethod<$1.ToCourseChackMatchRequest, $0.DefaultReply>(
+      '/to.v1.ApiTo/ToCourseChackMatch',
+      ($1.ToCourseChackMatchRequest value) => value.writeToBuffer(),
+      ($core.List<$core.int> value) => $0.DefaultReply.fromBuffer(value));
+  static final _$matchChackInsStart = $grpc.ClientMethod<$0.IdRequest, $0.DefaultReply>(
+      '/to.v1.ApiTo/MatchChackInsStart',
+      ($0.IdRequest value) => value.writeToBuffer(),
+      ($core.List<$core.int> value) => $0.DefaultReply.fromBuffer(value));
+  static final _$matchChackInsForceFinish = $grpc.ClientMethod<$0.IdRequest, $0.DefaultReply>(
+      '/to.v1.ApiTo/MatchChackInsForceFinish',
+      ($0.IdRequest value) => value.writeToBuffer(),
+      ($core.List<$core.int> value) => $0.DefaultReply.fromBuffer(value));
+  static final _$matchChackInsForceResume = $grpc.ClientMethod<$0.IdRequest, $0.DefaultReply>(
+      '/to.v1.ApiTo/MatchChackInsForceResume',
+      ($0.IdRequest value) => value.writeToBuffer(),
+      ($core.List<$core.int> value) => $0.DefaultReply.fromBuffer(value));
+  static final _$allCourseChackMatch = $grpc.ClientMethod<$0.IdArrRequest, $0.DefaultReply>(
+      '/to.v1.ApiTo/AllCourseChackMatch',
+      ($0.IdArrRequest value) => value.writeToBuffer(),
+      ($core.List<$core.int> value) => $0.DefaultReply.fromBuffer(value));
+  static final _$allMatchChackInsStart = $grpc.ClientMethod<$0.IdArrRequest, $0.DefaultReply>(
+      '/to.v1.ApiTo/AllMatchChackInsStart',
+      ($0.IdArrRequest value) => value.writeToBuffer(),
+      ($core.List<$core.int> value) => $0.DefaultReply.fromBuffer(value));
+  static final _$allMatchChackInsForceResume = $grpc.ClientMethod<$0.IdArrRequest, $0.DefaultReply>(
+      '/to.v1.ApiTo/AllMatchChackInsForceResume',
+      ($0.IdArrRequest value) => value.writeToBuffer(),
+      ($core.List<$core.int> value) => $0.DefaultReply.fromBuffer(value));
 
   ApiToClient($grpc.ClientChannel channel,
       {$grpc.CallOptions? options,
@@ -196,6 +228,38 @@ class ApiToClient extends $grpc.Client {
   $grpc.ResponseFuture<$0.DefaultReply> matchChackInsDel($0.IdRequest request, {$grpc.CallOptions? options}) {
     return $createUnaryCall(_$matchChackInsDel, request, options: options);
   }
+
+  $grpc.ResponseFuture<$1.ToCourseListReply> toCourseSelectList($0.IdRequest request, {$grpc.CallOptions? options}) {
+    return $createUnaryCall(_$toCourseSelectList, request, options: options);
+  }
+
+  $grpc.ResponseFuture<$0.DefaultReply> toCourseChackMatch($1.ToCourseChackMatchRequest request, {$grpc.CallOptions? options}) {
+    return $createUnaryCall(_$toCourseChackMatch, request, options: options);
+  }
+
+  $grpc.ResponseFuture<$0.DefaultReply> matchChackInsStart($0.IdRequest request, {$grpc.CallOptions? options}) {
+    return $createUnaryCall(_$matchChackInsStart, request, options: options);
+  }
+
+  $grpc.ResponseFuture<$0.DefaultReply> matchChackInsForceFinish($0.IdRequest request, {$grpc.CallOptions? options}) {
+    return $createUnaryCall(_$matchChackInsForceFinish, request, options: options);
+  }
+
+  $grpc.ResponseFuture<$0.DefaultReply> matchChackInsForceResume($0.IdRequest request, {$grpc.CallOptions? options}) {
+    return $createUnaryCall(_$matchChackInsForceResume, request, options: options);
+  }
+
+  $grpc.ResponseFuture<$0.DefaultReply> allCourseChackMatch($0.IdArrRequest request, {$grpc.CallOptions? options}) {
+    return $createUnaryCall(_$allCourseChackMatch, request, options: options);
+  }
+
+  $grpc.ResponseFuture<$0.DefaultReply> allMatchChackInsStart($0.IdArrRequest request, {$grpc.CallOptions? options}) {
+    return $createUnaryCall(_$allMatchChackInsStart, request, options: options);
+  }
+
+  $grpc.ResponseFuture<$0.DefaultReply> allMatchChackInsForceResume($0.IdArrRequest request, {$grpc.CallOptions? options}) {
+    return $createUnaryCall(_$allMatchChackInsForceResume, request, options: options);
+  }
 }
 
 @$pb.GrpcServiceName('to.v1.ApiTo')
@@ -350,6 +414,62 @@ abstract class ApiToServiceBase extends $grpc.Service {
         false,
         ($core.List<$core.int> value) => $0.IdRequest.fromBuffer(value),
         ($0.DefaultReply value) => value.writeToBuffer()));
+    $addMethod($grpc.ServiceMethod<$0.IdRequest, $1.ToCourseListReply>(
+        'ToCourseSelectList',
+        toCourseSelectList_Pre,
+        false,
+        false,
+        ($core.List<$core.int> value) => $0.IdRequest.fromBuffer(value),
+        ($1.ToCourseListReply value) => value.writeToBuffer()));
+    $addMethod($grpc.ServiceMethod<$1.ToCourseChackMatchRequest, $0.DefaultReply>(
+        'ToCourseChackMatch',
+        toCourseChackMatch_Pre,
+        false,
+        false,
+        ($core.List<$core.int> value) => $1.ToCourseChackMatchRequest.fromBuffer(value),
+        ($0.DefaultReply value) => value.writeToBuffer()));
+    $addMethod($grpc.ServiceMethod<$0.IdRequest, $0.DefaultReply>(
+        'MatchChackInsStart',
+        matchChackInsStart_Pre,
+        false,
+        false,
+        ($core.List<$core.int> value) => $0.IdRequest.fromBuffer(value),
+        ($0.DefaultReply value) => value.writeToBuffer()));
+    $addMethod($grpc.ServiceMethod<$0.IdRequest, $0.DefaultReply>(
+        'MatchChackInsForceFinish',
+        matchChackInsForceFinish_Pre,
+        false,
+        false,
+        ($core.List<$core.int> value) => $0.IdRequest.fromBuffer(value),
+        ($0.DefaultReply value) => value.writeToBuffer()));
+    $addMethod($grpc.ServiceMethod<$0.IdRequest, $0.DefaultReply>(
+        'MatchChackInsForceResume',
+        matchChackInsForceResume_Pre,
+        false,
+        false,
+        ($core.List<$core.int> value) => $0.IdRequest.fromBuffer(value),
+        ($0.DefaultReply value) => value.writeToBuffer()));
+    $addMethod($grpc.ServiceMethod<$0.IdArrRequest, $0.DefaultReply>(
+        'AllCourseChackMatch',
+        allCourseChackMatch_Pre,
+        false,
+        false,
+        ($core.List<$core.int> value) => $0.IdArrRequest.fromBuffer(value),
+        ($0.DefaultReply value) => value.writeToBuffer()));
+    $addMethod($grpc.ServiceMethod<$0.IdArrRequest, $0.DefaultReply>(
+        'AllMatchChackInsStart',
+        allMatchChackInsStart_Pre,
+        false,
+        false,
+        ($core.List<$core.int> value) => $0.IdArrRequest.fromBuffer(value),
+        ($0.DefaultReply value) => value.writeToBuffer()));
+    $addMethod($grpc.ServiceMethod<$0.IdArrRequest, $0.DefaultReply>(
+        'AllMatchChackInsForceResume',
+        allMatchChackInsForceResume_Pre,
+        false,
+        false,
+        ($core.List<$core.int> value) => $0.IdArrRequest.fromBuffer(value),
+        ($0.DefaultReply value) => value.writeToBuffer()));
   }
 
   $async.Future<$0.DefaultReply> toSendCodeToPhoneV2_Pre($grpc.ServiceCall call, $async.Future<$0.ToSendCodeToPhoneRequestV2> request) async {
@@ -436,6 +556,38 @@ abstract class ApiToServiceBase extends $grpc.Service {
     return matchChackInsDel(call, await request);
   }
 
+  $async.Future<$1.ToCourseListReply> toCourseSelectList_Pre($grpc.ServiceCall call, $async.Future<$0.IdRequest> request) async {
+    return toCourseSelectList(call, await request);
+  }
+
+  $async.Future<$0.DefaultReply> toCourseChackMatch_Pre($grpc.ServiceCall call, $async.Future<$1.ToCourseChackMatchRequest> request) async {
+    return toCourseChackMatch(call, await request);
+  }
+
+  $async.Future<$0.DefaultReply> matchChackInsStart_Pre($grpc.ServiceCall call, $async.Future<$0.IdRequest> request) async {
+    return matchChackInsStart(call, await request);
+  }
+
+  $async.Future<$0.DefaultReply> matchChackInsForceFinish_Pre($grpc.ServiceCall call, $async.Future<$0.IdRequest> request) async {
+    return matchChackInsForceFinish(call, await request);
+  }
+
+  $async.Future<$0.DefaultReply> matchChackInsForceResume_Pre($grpc.ServiceCall call, $async.Future<$0.IdRequest> request) async {
+    return matchChackInsForceResume(call, await request);
+  }
+
+  $async.Future<$0.DefaultReply> allCourseChackMatch_Pre($grpc.ServiceCall call, $async.Future<$0.IdArrRequest> request) async {
+    return allCourseChackMatch(call, await request);
+  }
+
+  $async.Future<$0.DefaultReply> allMatchChackInsStart_Pre($grpc.ServiceCall call, $async.Future<$0.IdArrRequest> request) async {
+    return allMatchChackInsStart(call, await request);
+  }
+
+  $async.Future<$0.DefaultReply> allMatchChackInsForceResume_Pre($grpc.ServiceCall call, $async.Future<$0.IdArrRequest> request) async {
+    return allMatchChackInsForceResume(call, await request);
+  }
+
   $async.Future<$0.DefaultReply> toSendCodeToPhoneV2($grpc.ServiceCall call, $0.ToSendCodeToPhoneRequestV2 request);
   $async.Future<$0.GetSmsSendLeftTimeReply> toGetSmsSendLeftTimeV2($grpc.ServiceCall call, $0.GetSmsSendLeftTimeRequest request);
   $async.Future<$0.SignInReply> toSignInV2($grpc.ServiceCall call, $0.ToSignInRequestV2 request);
@@ -457,4 +609,12 @@ abstract class ApiToServiceBase extends $grpc.Service {
   $async.Future<$0.DefaultReply> toMatchRegusterDel($grpc.ServiceCall call, $0.IdRequest request);
   $async.Future<$1.ToMatchRegusterListReply> toMatchRegusterList($grpc.ServiceCall call, $1.ToMatchRegusterListRequest request);
   $async.Future<$0.DefaultReply> matchChackInsDel($grpc.ServiceCall call, $0.IdRequest request);
+  $async.Future<$1.ToCourseListReply> toCourseSelectList($grpc.ServiceCall call, $0.IdRequest request);
+  $async.Future<$0.DefaultReply> toCourseChackMatch($grpc.ServiceCall call, $1.ToCourseChackMatchRequest request);
+  $async.Future<$0.DefaultReply> matchChackInsStart($grpc.ServiceCall call, $0.IdRequest request);
+  $async.Future<$0.DefaultReply> matchChackInsForceFinish($grpc.ServiceCall call, $0.IdRequest request);
+  $async.Future<$0.DefaultReply> matchChackInsForceResume($grpc.ServiceCall call, $0.IdRequest request);
+  $async.Future<$0.DefaultReply> allCourseChackMatch($grpc.ServiceCall call, $0.IdArrRequest request);
+  $async.Future<$0.DefaultReply> allMatchChackInsStart($grpc.ServiceCall call, $0.IdArrRequest request);
+  $async.Future<$0.DefaultReply> allMatchChackInsForceResume($grpc.ServiceCall call, $0.IdArrRequest request);
 }

+ 49 - 18
app_business/lib/generated/track_offical.pbjson.dart

@@ -13,6 +13,33 @@ import 'dart:convert' as $convert;
 import 'dart:core' as $core;
 import 'dart:typed_data' as $typed_data;
 
+@$core.Deprecated('Use toCourseChackMatchRequestDescriptor instead')
+const ToCourseChackMatchRequest$json = {
+  '1': 'ToCourseChackMatchRequest',
+  '2': [
+    {'1': 'id', '3': 1, '4': 1, '5': 5, '10': 'id'},
+    {'1': 'cId', '3': 3, '4': 1, '5': 5, '10': 'cId'},
+  ],
+};
+
+/// Descriptor for `ToCourseChackMatchRequest`. Decode as a `google.protobuf.DescriptorProto`.
+final $typed_data.Uint8List toCourseChackMatchRequestDescriptor = $convert.base64Decode(
+    'ChlUb0NvdXJzZUNoYWNrTWF0Y2hSZXF1ZXN0Eg4KAmlkGAEgASgFUgJpZBIQCgNjSWQYAyABKA'
+    'VSA2NJZA==');
+
+@$core.Deprecated('Use toActivityListReplyDescriptor instead')
+const ToActivityListReply$json = {
+  '1': 'ToActivityListReply',
+  '2': [
+    {'1': 'list', '3': 1, '4': 3, '5': 11, '6': '.base.v1.ToActionBasicInfo', '10': 'list'},
+  ],
+};
+
+/// Descriptor for `ToActivityListReply`. Decode as a `google.protobuf.DescriptorProto`.
+final $typed_data.Uint8List toActivityListReplyDescriptor = $convert.base64Decode(
+    'ChNUb0FjdGl2aXR5TGlzdFJlcGx5Ei4KBGxpc3QYASADKAsyGi5iYXNlLnYxLlRvQWN0aW9uQm'
+    'FzaWNJbmZvUgRsaXN0');
+
 @$core.Deprecated('Use toMatchRegusterEditRequestDescriptor instead')
 const ToMatchRegusterEditRequest$json = {
   '1': 'ToMatchRegusterEditRequest',
@@ -21,9 +48,8 @@ const ToMatchRegusterEditRequest$json = {
     {'1': 'regName', '3': 2, '4': 1, '5': 9, '10': 'regName'},
     {'1': 'start_at', '3': 3, '4': 1, '5': 11, '6': '.google.protobuf.Timestamp', '10': 'startAt'},
     {'1': 'stop_at', '3': 4, '4': 1, '5': 11, '6': '.google.protobuf.Timestamp', '10': 'stopAt'},
-    {'1': 'actId', '3': 5, '4': 1, '5': 5, '10': 'actId'},
-    {'1': 'isQueryPwd', '3': 6, '4': 1, '5': 8, '10': 'isQueryPwd'},
-    {'1': 'queryPasswd', '3': 7, '4': 1, '5': 9, '10': 'queryPasswd'},
+    {'1': 'isQueryPwd', '3': 5, '4': 1, '5': 8, '10': 'isQueryPwd'},
+    {'1': 'queryPasswd', '3': 6, '4': 1, '5': 9, '10': 'queryPasswd'},
   ],
 };
 
@@ -32,21 +58,21 @@ final $typed_data.Uint8List toMatchRegusterEditRequestDescriptor = $convert.base
     'ChpUb01hdGNoUmVndXN0ZXJFZGl0UmVxdWVzdBIOCgJpZBgBIAEoBVICaWQSGAoHcmVnTmFtZR'
     'gCIAEoCVIHcmVnTmFtZRI1CghzdGFydF9hdBgDIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1l'
     'c3RhbXBSB3N0YXJ0QXQSMwoHc3RvcF9hdBgEIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3'
-    'RhbXBSBnN0b3BBdBIUCgVhY3RJZBgFIAEoBVIFYWN0SWQSHgoKaXNRdWVyeVB3ZBgGIAEoCFIK'
-    'aXNRdWVyeVB3ZBIgCgtxdWVyeVBhc3N3ZBgHIAEoCVILcXVlcnlQYXNzd2Q=');
+    'RhbXBSBnN0b3BBdBIeCgppc1F1ZXJ5UHdkGAUgASgIUgppc1F1ZXJ5UHdkEiAKC3F1ZXJ5UGFz'
+    'c3dkGAYgASgJUgtxdWVyeVBhc3N3ZA==');
 
-@$core.Deprecated('Use toActivityListReplyDescriptor instead')
-const ToActivityListReply$json = {
-  '1': 'ToActivityListReply',
+@$core.Deprecated('Use toCourseListReplyDescriptor instead')
+const ToCourseListReply$json = {
+  '1': 'ToCourseListReply',
   '2': [
-    {'1': 'list', '3': 1, '4': 3, '5': 11, '6': '.base.v1.ToActionBasicInfo', '10': 'list'},
+    {'1': 'list', '3': 1, '4': 3, '5': 11, '6': '.base.v1.CourseBase', '10': 'list'},
   ],
 };
 
-/// Descriptor for `ToActivityListReply`. Decode as a `google.protobuf.DescriptorProto`.
-final $typed_data.Uint8List toActivityListReplyDescriptor = $convert.base64Decode(
-    'ChNUb0FjdGl2aXR5TGlzdFJlcGx5Ei4KBGxpc3QYASADKAsyGi5iYXNlLnYxLlRvQWN0aW9uQm'
-    'FzaWNJbmZvUgRsaXN0');
+/// Descriptor for `ToCourseListReply`. Decode as a `google.protobuf.DescriptorProto`.
+final $typed_data.Uint8List toCourseListReplyDescriptor = $convert.base64Decode(
+    'ChFUb0NvdXJzZUxpc3RSZXBseRInCgRsaXN0GAEgAygLMhMuYmFzZS52MS5Db3Vyc2VCYXNlUg'
+    'RsaXN0');
 
 @$core.Deprecated('Use toMatchRegusterListRequestDescriptor instead')
 const ToMatchRegusterListRequest$json = {
@@ -101,21 +127,26 @@ final $typed_data.Uint8List matchRegusterInfoDescriptor = $convert.base64Decode(
 const ToChackInsInfo$json = {
   '1': 'ToChackInsInfo',
   '2': [
-    {'1': 'marId', '3': 1, '4': 1, '5': 5, '10': 'marId'},
+    {'1': 'mciId', '3': 1, '4': 1, '5': 5, '10': 'mciId'},
     {'1': 'oId', '3': 2, '4': 1, '5': 5, '10': 'oId'},
     {'1': 'nickname', '3': 3, '4': 1, '5': 9, '10': 'nickname'},
     {'1': 'phone', '3': 4, '4': 1, '5': 9, '10': 'phone'},
     {'1': 'chackInsTime', '3': 5, '4': 1, '5': 9, '10': 'chackInsTime'},
-    {'1': 'isAllowDel', '3': 6, '4': 1, '5': 8, '10': 'isAllowDel'},
+    {'1': 'cName', '3': 6, '4': 1, '5': 9, '10': 'cName'},
+    {'1': 'cId', '3': 7, '4': 1, '5': 5, '10': 'cId'},
+    {'1': 'mState', '3': 8, '4': 1, '5': 5, '10': 'mState'},
+    {'1': 'isStart', '3': 9, '4': 1, '5': 8, '10': 'isStart'},
+    {'1': 'punchCpNum', '3': 10, '4': 1, '5': 5, '10': 'punchCpNum'},
   ],
 };
 
 /// Descriptor for `ToChackInsInfo`. Decode as a `google.protobuf.DescriptorProto`.
 final $typed_data.Uint8List toChackInsInfoDescriptor = $convert.base64Decode(
-    'Cg5Ub0NoYWNrSW5zSW5mbxIUCgVtYXJJZBgBIAEoBVIFbWFySWQSEAoDb0lkGAIgASgFUgNvSW'
+    'Cg5Ub0NoYWNrSW5zSW5mbxIUCgVtY2lJZBgBIAEoBVIFbWNpSWQSEAoDb0lkGAIgASgFUgNvSW'
     'QSGgoIbmlja25hbWUYAyABKAlSCG5pY2tuYW1lEhQKBXBob25lGAQgASgJUgVwaG9uZRIiCgxj'
-    'aGFja0luc1RpbWUYBSABKAlSDGNoYWNrSW5zVGltZRIeCgppc0FsbG93RGVsGAYgASgIUgppc0'
-    'FsbG93RGVs');
+    'aGFja0luc1RpbWUYBSABKAlSDGNoYWNrSW5zVGltZRIUCgVjTmFtZRgGIAEoCVIFY05hbWUSEA'
+    'oDY0lkGAcgASgFUgNjSWQSFgoGbVN0YXRlGAggASgFUgZtU3RhdGUSGAoHaXNTdGFydBgJIAEo'
+    'CFIHaXNTdGFydBIeCgpwdW5jaENwTnVtGAogASgFUgpwdW5jaENwTnVt');
 
 @$core.Deprecated('Use toMatchRegusterAddRequestDescriptor instead')
 const ToMatchRegusterAddRequest$json = {

+ 1 - 1
app_business/lib/service/api.dart

@@ -15,7 +15,7 @@ import 'package:track_common/track_common.dart';
 import 'abase.dart';
 
 export 'package:app_business/generated/base.pb.dart'
-    show DefaultRequest, IdRequest;
+    show DefaultRequest, IdRequest, IdArrRequest;
 export 'package:app_business/generated/google/protobuf/timestamp.pb.dart';
 export 'package:app_business/generated/track_offical.pbgrpc.dart'
     show ToMatchRegusterAddRequest, ToMatchRegusterListRequest;

+ 134 - 5
app_business/lib/view/home/event_manage/event_manage.dart

@@ -75,31 +75,86 @@ class EventManage extends GetView<EventManagerController> {
 
   Iterable<LineChartTitle> rightTitles() {
     return [
-      // LineChartTitle(
-      //     title: Checkbox(value: true, onChanged: (v) {}), width: 32),
+      LineChartTitle(
+          title: Checkbox(
+              value: false,
+              onChanged: (v) {
+                controller.selectedUser.update((val) {
+                  final all = controller.userList.map((e) => e.checkId);
+                  val?.assignAll(all);
+                });
+              }),
+          width: 32),
       const LineChartTitle(title: Text('序号'), width: 42),
       const LineChartTitle(title: Text('用户名'), width: 70),
       const LineChartTitle(title: Text('手机号'), flex: 1),
-      const LineChartTitle(title: Text('签到时间'), flex: 1),
-      const LineChartTitle(title: Text('删除'), width: 67),
+      const LineChartTitle(title: Text('签到时间'), width: 78),
+      const LineChartTitle(title: Text('手环'), width: 67),
+      const LineChartTitle(title: Text('路线'), width: 90),
+      const LineChartTitle(title: Text('状态'), width: 67),
+      const LineChartTitle(title: Text('操作'), width: 67),
     ];
   }
 
   Iterable<LineChartElem> rightUsers() {
     return controller.userList.indexed.map((e) {
       final (i, one) = e;
+      var stateStr = '';
+      var stateColor = Colors.white;
+
+      switch (one.state) {
+        case UserState.idle:
+          stateStr = '未分发';
+          stateColor = Colors.blue;
+          break;
+        case UserState.isStart:
+          stateStr = '已开始';
+          stateColor = Colors.green;
+          break;
+        case UserState.isFinish:
+          stateStr = '已结束';
+          stateColor = Colors.orange;
+          break;
+        default:
+      }
+
+      var optStr = '';
 
       return LineChartElem([
-        // Checkbox(value: false, onChanged: (v) {}),
+        Checkbox(
+            value: controller.selectedUser.value.contains(one.checkId),
+            onChanged: (v) {
+              controller.selectedUser.update((val) {
+                if (v == true) {
+                  val?.add(one.checkId);
+                } else {
+                  val?.remove(one.checkId);
+                }
+              });
+            }),
         Text('${i + 1}'),
         Text(one.name),
         Text(one.phone),
         Text(one.checkTime),
+        Text(one.bandSN),
+        one.state == UserState.idle
+            ? SizedBox(
+                height: 22.78,
+                width: 51.2,
+                child: SmallButton(
+                    color: Colors.blue,
+                    onPressed: routeSelect,
+                    child: const Text('分发')))
+            : Text(one.routeName),
+        one.state == UserState.hasRoute
+            ? SmallButton(child: const Text('开始'), onPressed: () {})
+            : Text(stateStr, style: TextStyle(color: stateColor)),
         SizedBox(
             width: 51.2,
             height: 22.76,
             child: SmallButton(
               color: const Color(0xffff0000),
+              isOutline: true,
               onPressed: () {
                 controller.deleteSignIn(one);
               },
@@ -108,6 +163,80 @@ class EventManage extends GetView<EventManagerController> {
       ]);
     });
   }
+
+  Future<void> routeSelect() async {
+    final list = await controller.routeList();
+    await Get.dialog(_RouteSelectDialog(list: list));
+    final id = controller.tmpSelectRoute?.id;
+    if (id != null) {
+      await controller.routeSelect([id]);
+    }
+  }
+}
+
+class _RouteSelectDialog extends GetView<EventManagerController> {
+  const _RouteSelectDialog({required this.list});
+  final Iterable<RouteInfo> list;
+
+  @override
+  Widget build(BuildContext context) {
+    return AlertDialog(
+      title: const Center(
+          child: Text(
+        '选择路线',
+        style: TextStyle(fontSize: 17),
+      )),
+      backgroundColor: Colors.white,
+      shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(17.78)),
+      content: Column(
+        mainAxisSize: MainAxisSize.min,
+        crossAxisAlignment: CrossAxisAlignment.center,
+        children: [
+          SizedBox(
+              width: 303.64,
+              child: DropdownMenu<RouteInfo>(
+                  key: GlobalKey(),
+                  width: 303,
+                  hintText: '请选择路线',
+                  onSelected: (one) {
+                    controller.tmpSelectRoute = one;
+                  },
+                  inputDecorationTheme: InputDecorationTheme(
+                    border: textBorder,
+                    isDense: true,
+                  ),
+                  dropdownMenuEntries: list
+                      .map((e) =>
+                          DropdownMenuEntry<RouteInfo>(value: e, label: e.name))
+                      .toList())),
+          const SizedBox(height: 30),
+          Row(
+            mainAxisAlignment: MainAxisAlignment.spaceEvenly,
+            children: [
+              SizedBox(
+                  height: 38,
+                  width: 106.67,
+                  child: SmallButton(
+                      onPressed: () {
+                        Get.back();
+                      },
+                      color: Colors.orange,
+                      child: const Text('随机'))),
+              SizedBox(
+                  height: 38,
+                  width: 106.67,
+                  child: SmallButton(
+                      onPressed: () {
+                        Get.back();
+                      },
+                      color: Colors.blue,
+                      child: const Text('确认'))),
+            ],
+          )
+        ],
+      ),
+    );
+  }
 }
 
 class EventTitle extends GetView<EventManagerController> {

+ 34 - 1
app_business/lib/view/home/event_manage/event_manage_controller.dart

@@ -1,3 +1,5 @@
+import 'dart:collection';
+
 import 'package:app_business/service/api.dart';
 import 'package:track_common/service/map_watch.dart';
 import 'package:track_common/track_common.dart';
@@ -12,13 +14,23 @@ class EventInManage {
   var userList = <UserInManage>[];
 }
 
+enum UserState { idle, hasRoute, isStart, isFinish }
+
 class UserInManage {
   var id = 0;
   var checkId = 0;
   var name = '';
   var phone = '';
+  var bandSN = '';
   var checkTime = '';
+  var state = UserState.idle;
   var routeName = '';
+  var isAllowDel = true;
+}
+
+class RouteInfo {
+  var id = 0;
+  var name = '';
 }
 
 class EventManagerController extends GetxController {
@@ -26,6 +38,8 @@ class EventManagerController extends GetxController {
   final eventList = <EventInManage>[].obs;
   ApiService get _api => Get.find();
   final filterDate = DateTime.now().obs;
+  final selectedUser = HashSet<int>().obs;
+  RouteInfo? tmpSelectRoute;
 
   EventInManage? get selected {
     for (var e in eventList) {
@@ -83,9 +97,11 @@ class EventManagerController extends GetxController {
             ..userList = e.userList
                 .map((u) => UserInManage()
                   ..id = u.oId
-                  ..checkId = u.marId
+                  ..checkId = u.mciId
                   ..name = u.nickname
                   ..phone = u.phone
+                  ..routeName = u.cName
+                  ..isAllowDel = u.punchCpNum == 0
                   ..checkTime = u.chackInsTime)
                 .toList())
           .toList();
@@ -111,6 +127,23 @@ class EventManagerController extends GetxController {
     return _api.eventEdit(id, event);
   }
 
+  Future<Iterable<RouteInfo>> routeList() async {
+    final r = await _api.stub
+        .toCourseSelectList(IdRequest()..id = Int64(selected!.id));
+    return r.list.map((e) => RouteInfo()
+      ..id = e.cId
+      ..name = e.cName);
+  }
+
+  Future<void> routeSelect(Iterable<int> idList) async {
+    await _api.stub.allCourseChackMatch(IdArrRequest()..idArr.addAll(idList));
+  }
+
+  Future<void> routeSelectAll() async {
+    final idList = selectedUser.value.toList();
+    await routeSelect(idList);
+  }
+
   Future<void> deleteSignIn(UserInManage user) async {
     Get.dialog(AppDialog(
         title: const Text('删除签到'),

+ 21 - 21
app_business/pubspec.lock

@@ -93,10 +93,10 @@ packages:
     dependency: transitive
     description:
       name: collection
-      sha256: f092b211a4319e98e5ff58223576de6c2803db36221657b46c82574721240687
+      sha256: ee67cb0715911d28db6bf4af1026078bd6f0128b07a5f66fb2ed94ec6783c09a
       url: "https://pub.flutter-io.cn"
     source: hosted
-    version: "1.17.2"
+    version: "1.18.0"
   common_pub:
     dependency: transitive
     description:
@@ -180,10 +180,10 @@ packages:
     dependency: transitive
     description:
       name: fl_chart
-      sha256: c1e26c7e48496be85104c16c040950b0436674cdf0737f3f6e95511b2529b592
+      sha256: fe6fec7d85975a99c73b9515a69a6e291364accfa0e4a5b3ce6de814d74b9a1c
       url: "https://pub.flutter-io.cn"
     source: hosted
-    version: "0.63.0"
+    version: "0.66.0"
   flutter:
     dependency: "direct main"
     description: flutter
@@ -201,10 +201,10 @@ packages:
     dependency: "direct dev"
     description:
       name: flutter_lints
-      sha256: a25a15ebbdfc33ab1cd26c63a6ee519df92338a9c10f122adda92938253bef04
+      sha256: e2a421b7e59244faef694ba7b30562e489c2b489866e505074eb005cd7060db7
       url: "https://pub.flutter-io.cn"
     source: hosted
-    version: "2.0.3"
+    version: "3.0.1"
   flutter_localizations:
     dependency: "direct main"
     description: flutter
@@ -312,10 +312,10 @@ packages:
     dependency: transitive
     description:
       name: lints
-      sha256: "0a217c6c989d21039f1498c3ed9f3ed71b354e69873f13a8dfc3c9fe76f1b452"
+      sha256: cbf8d4b858bb0134ef3ef87841abdf8d63bfc255c266b7bf6b39daa1085c4290
       url: "https://pub.flutter-io.cn"
     source: hosted
-    version: "2.1.1"
+    version: "3.0.0"
   logger:
     dependency: "direct main"
     description:
@@ -352,10 +352,10 @@ packages:
     dependency: transitive
     description:
       name: meta
-      sha256: "3c74dbf8763d36539f114c799d8a2d87343b5067e9d796ca22b5eb8437090ee3"
+      sha256: a6e590c838b18133bb482a2745ad77c5bb7715fb0451209e1a7567d416678b8e
       url: "https://pub.flutter-io.cn"
     source: hosted
-    version: "1.9.1"
+    version: "1.10.0"
   mime:
     dependency: transitive
     description:
@@ -493,7 +493,7 @@ packages:
     source: hosted
     version: "3.0.0"
   protobuf:
-    dependency: transitive
+    dependency: "direct main"
     description:
       name: protobuf
       sha256: "68645b24e0716782e58948f8467fd42a880f255096a821f9e7d0ec625b00c84d"
@@ -605,18 +605,18 @@ packages:
     dependency: transitive
     description:
       name: stack_trace
-      sha256: c3c7d8edb15bee7f0f74debd4b9c5f3c2ea86766fe4178eb2a18eb30a0bdaed5
+      sha256: "73713990125a6d93122541237550ee3352a2d84baad52d375a4cad2eb9b7ce0b"
       url: "https://pub.flutter-io.cn"
     source: hosted
-    version: "1.11.0"
+    version: "1.11.1"
   stream_channel:
     dependency: transitive
     description:
       name: stream_channel
-      sha256: "83615bee9045c1d322bbbd1ba209b7a749c2cbcdcb3fdd1df8eb488b3279c1c8"
+      sha256: ba2aa5d8cc609d96bbb2899c28934f9e1af5cddbd60a827822ea467161eb54e7
       url: "https://pub.flutter-io.cn"
     source: hosted
-    version: "2.1.1"
+    version: "2.1.2"
   string_scanner:
     dependency: transitive
     description:
@@ -645,10 +645,10 @@ packages:
     dependency: transitive
     description:
       name: test_api
-      sha256: "75760ffd7786fffdfb9597c35c5b27eaeec82be8edfb6d71d32651128ed7aab8"
+      sha256: "5c2f730018264d276c20e4f1503fd1308dfbbae39ec8ee63c5236311ac06954b"
       url: "https://pub.flutter-io.cn"
     source: hosted
-    version: "0.6.0"
+    version: "0.6.1"
   track_common:
     dependency: "direct main"
     description:
@@ -700,10 +700,10 @@ packages:
     dependency: transitive
     description:
       name: web
-      sha256: dc8ccd225a2005c1be616fe02951e2e342092edf968cf0844220383757ef8f10
+      sha256: afe077240a270dcfd2aafe77602b4113645af95d0ad31128cc02bce5ac5d5152
       url: "https://pub.flutter-io.cn"
     source: hosted
-    version: "0.1.4-beta"
+    version: "0.3.0"
   web_socket_channel:
     dependency: transitive
     description:
@@ -769,5 +769,5 @@ packages:
     source: hosted
     version: "3.1.2"
 sdks:
-  dart: ">=3.1.5 <4.0.0"
-  flutter: ">=3.13.0"
+  dart: ">=3.2.0 <4.0.0"
+  flutter: ">=3.16.0"

+ 2 - 1
app_business/pubspec.yaml

@@ -48,6 +48,7 @@ dependencies:
   package_info_plus: ^4.2.0
   fixnum: ^1.1.0
   pretty_qr_code: ^3.0.0
+  protobuf: any
 
 dev_dependencies:
   flutter_test:
@@ -58,7 +59,7 @@ dev_dependencies:
   # activated in the `analysis_options.yaml` file located at the root of your
   # package. See that file for information about deactivating specific lint
   # rules and activating additional ones.
-  flutter_lints: ^2.0.0
+  flutter_lints: ^3.0.0
 
 # For information on the generic Dart part of this file, see the
 # following page: https://dart.dev/tools/pub/pubspec

+ 1 - 1
libs/common_pub

@@ -1 +1 @@
-Subproject commit 8e26060692e76ada8cf2cad3ab2b5da88123d3b9
+Subproject commit ed1a04f63885da8efc9a8729fafdcec04119eb90

+ 9 - 9
libs/track_common/lib/view/login/login_view.dart

@@ -79,17 +79,16 @@ class LoginView extends GetView<LoginController> {
           mainAxisAlignment: MainAxisAlignment.center,
           crossAxisAlignment: CrossAxisAlignment.center,
           children: [
-            const Expanded(
-                child: Text(
+            Spacer(),
+            Text(
               '定向运动活动现场监控系统',
               textAlign: TextAlign.center,
-              style: TextStyle(fontSize: 22.0, fontWeight: FontWeight.bold),
-            )),
-            // SizedBox(height: inputHeight),
+              style: TextStyle(fontSize: 29.87, fontWeight: FontWeight.w500),
+            ),
             // Expanded(child: wInput(context)),
             SizedBox(height: inputHeight, child: wInput(context)),
-            Expanded(
-                child: Image.asset(Assets.imagesIcLoginLogo, package: package)),
+            Image.asset(Assets.imagesIcLoginLogo, height: 24, package: package),
+            Spacer()
             // Expanded(flex: 10,child:  wExtra()),
           ],
         ));
@@ -120,8 +119,9 @@ class LoginView extends GetView<LoginController> {
 
   Widget wInput(BuildContext context) {
     return Container(
-        margin: EdgeInsets.fromLTRB(
-            context.wp(6), context.wp(3), context.wp(6), context.wp(2)),
+        width: 432.8,
+        height: 424,
+        margin: EdgeInsets.only(top: 22.04, bottom: 21),
         padding: EdgeInsets.fromLTRB(
             context.wp(6), context.wp(3.6), context.wp(6), context.wp(2)),
         decoration: BoxDecoration(

+ 16 - 16
libs/track_common/pubspec.lock

@@ -93,10 +93,10 @@ packages:
     dependency: transitive
     description:
       name: collection
-      sha256: f092b211a4319e98e5ff58223576de6c2803db36221657b46c82574721240687
+      sha256: ee67cb0715911d28db6bf4af1026078bd6f0128b07a5f66fb2ed94ec6783c09a
       url: "https://pub.flutter-io.cn"
     source: hosted
-    version: "1.17.2"
+    version: "1.18.0"
   common_pub:
     dependency: "direct main"
     description:
@@ -180,10 +180,10 @@ packages:
     dependency: transitive
     description:
       name: fl_chart
-      sha256: c1e26c7e48496be85104c16c040950b0436674cdf0737f3f6e95511b2529b592
+      sha256: fe6fec7d85975a99c73b9515a69a6e291364accfa0e4a5b3ce6de814d74b9a1c
       url: "https://pub.flutter-io.cn"
     source: hosted
-    version: "0.63.0"
+    version: "0.66.0"
   flutter:
     dependency: "direct main"
     description: flutter
@@ -331,10 +331,10 @@ packages:
     dependency: transitive
     description:
       name: meta
-      sha256: "3c74dbf8763d36539f114c799d8a2d87343b5067e9d796ca22b5eb8437090ee3"
+      sha256: a6e590c838b18133bb482a2745ad77c5bb7715fb0451209e1a7567d416678b8e
       url: "https://pub.flutter-io.cn"
     source: hosted
-    version: "1.9.1"
+    version: "1.10.0"
   mime:
     dependency: transitive
     description:
@@ -552,18 +552,18 @@ packages:
     dependency: transitive
     description:
       name: stack_trace
-      sha256: c3c7d8edb15bee7f0f74debd4b9c5f3c2ea86766fe4178eb2a18eb30a0bdaed5
+      sha256: "73713990125a6d93122541237550ee3352a2d84baad52d375a4cad2eb9b7ce0b"
       url: "https://pub.flutter-io.cn"
     source: hosted
-    version: "1.11.0"
+    version: "1.11.1"
   stream_channel:
     dependency: transitive
     description:
       name: stream_channel
-      sha256: "83615bee9045c1d322bbbd1ba209b7a749c2cbcdcb3fdd1df8eb488b3279c1c8"
+      sha256: ba2aa5d8cc609d96bbb2899c28934f9e1af5cddbd60a827822ea467161eb54e7
       url: "https://pub.flutter-io.cn"
     source: hosted
-    version: "2.1.1"
+    version: "2.1.2"
   string_scanner:
     dependency: transitive
     description:
@@ -592,10 +592,10 @@ packages:
     dependency: transitive
     description:
       name: test_api
-      sha256: "75760ffd7786fffdfb9597c35c5b27eaeec82be8edfb6d71d32651128ed7aab8"
+      sha256: "5c2f730018264d276c20e4f1503fd1308dfbbae39ec8ee63c5236311ac06954b"
       url: "https://pub.flutter-io.cn"
     source: hosted
-    version: "0.6.0"
+    version: "0.6.1"
   transparent_pointer:
     dependency: transitive
     description:
@@ -640,10 +640,10 @@ packages:
     dependency: transitive
     description:
       name: web
-      sha256: dc8ccd225a2005c1be616fe02951e2e342092edf968cf0844220383757ef8f10
+      sha256: afe077240a270dcfd2aafe77602b4113645af95d0ad31128cc02bce5ac5d5152
       url: "https://pub.flutter-io.cn"
     source: hosted
-    version: "0.1.4-beta"
+    version: "0.3.0"
   web_socket_channel:
     dependency: transitive
     description:
@@ -709,5 +709,5 @@ packages:
     source: hosted
     version: "3.1.2"
 sdks:
-  dart: ">=3.1.5 <4.0.0"
-  flutter: ">=3.13.0"
+  dart: ">=3.2.0 <4.0.0"
+  flutter: ">=3.16.0"