title = '工单支持'; $this->params['breadcrumbs'][] = $this->title; FontAwesomeAsset::register($this); ?>
= Html::a('创建工单', ['create'], ['class' => 'btn btn-success']) ?>
= GridView::widget([ 'dataProvider' => $dataProvider, 'columns' => [ [ 'attribute' => 'id', 'label' => '工单ID', ], [ 'attribute' => 'title', 'label' => '标题', 'format' => 'raw', // 使用 raw 格式,这样 Yii2 不会对 value 的返回值进行 HTML 编码 'value' => function (Tickets $model) { return Html::a($model->title, ['view', 'id' => $model->id]); }, ], [ 'attribute' => 'created_at', 'label' => '创建时间', ], [ 'attribute' => 'updated_at', 'label' => '最近更新时间', 'value' => function (Tickets $model) { return Yii::$app->formatter->asRelativeTime(new DateTime($model->updated_at, new DateTimeZone('GMT+8'))); } ], [ 'attribute' => 'status', 'label' => '状态', 'format' => 'raw', // 使用 raw 格式,这样 Yii2 不会对 value 的返回值进行 HTML 编码 'value' => function (Tickets $model) { switch ($model->status) { case Tickets::STATUS_OPEN: return '工单已开启'; case Tickets::STATUS_ADMIN_REPLY: return '管理员已回复'; case Tickets::STATUS_USER_REPLY: return '用户已回复'; case Tickets::STATUS_CLOSED: return '工单已关闭'; default: return '未知状态'; } } ], [ 'class' => ActionColumn::class, 'template' => '{view} {delete}', 'buttons' => [ 'view' => function ($url, $model, $key) { return Html::a('', $url, [ 'title' => '查看工单', 'data-pjax' => '0', ]); }, 'delete' => function ($url, $model, $key) { if ($model->status !== Tickets::STATUS_CLOSED) { return Html::a('', $url, [ 'title' => '关闭工单', 'data-pjax' => '0', 'data-confirm' => '你确定要关闭这个工单吗?', 'data-method' => 'post', ]); } else { return Html::tag('i', '', [ 'class' => 'fa-solid fa-xmark', 'style' => 'color: gray;', 'title' => '工单已关闭', ]); } }, ], 'urlCreator' => function ($action, Tickets $model, $key, $index, $column) { return Url::toRoute([$action, 'id' => $model->id]); }, ], ], ]); ?>