title = '工单支持管理';
$this->params['breadcrumbs'][] = $this->title;
FontAwesomeAsset::register($this);
?>
= Html::encode($this->title) ?>
= GridView::widget([
'dataProvider' => $dataProvider,
'filterModel' => $searchModel,
'columns' => [
[
'attribute' => 'id',
'label' => '工单ID',
],
[
'attribute' => 'user_id',
'label' => '用户',
'format' => 'html',
'value' => function (Tickets $model) {
return $model->user->username . '
(ID: ' . $model->user->id . ')';
}
],
[
'attribute' => 'title',
'label' => '标题',
'format' => 'raw', // 使用 raw 格式,这样 Yii2 不会对 value 的返回值进行 HTML 编码
'value' => function (Tickets $model) {
return Html::a($model->title, ['ticket-view', 'id' => $model->id]);
},
],
[
'attribute' => 'created_at',
'label' => '创建时间',
'filter' => false
],
[
'attribute' => 'updated_at',
'label' => '最近更新时间',
'value' => function (Tickets $model) {
return Yii::$app->formatter->asRelativeTime(new DateTime($model->updated_at, new DateTimeZone('GMT+8')));
},
'filter' => false
],
[
'attribute' => 'status',
'label' => '状态',
'format' => 'raw',
'value' => function (Tickets $model) {
return match ($model->status) {
Tickets::STATUS_OPEN => '工单已开启',
Tickets::STATUS_ADMIN_REPLY => '管理员已回复',
Tickets::STATUS_USER_REPLY => '用户已回复',
Tickets::STATUS_CLOSED => '工单已关闭',
default => '未知状态',
};
},
'filter' => [
Tickets::STATUS_OPEN => '工单已开启',
Tickets::STATUS_ADMIN_REPLY => '管理员已回复',
Tickets::STATUS_USER_REPLY => '用户已回复',
Tickets::STATUS_CLOSED => '工单已关闭',
]
],
[
'class' => ActionColumn::class,
'template' => '{view} {delete}',
'buttons' => [
'view' => function ($url, $model, $key) {
return Html::a('', ['ticket-view', 'id' => $model->id], [
'title' => '查看工单',
'data-pjax' => '0',
]);
},
'delete' => function ($url, $model, $key) {
if ($model->status !== Tickets::STATUS_CLOSED) {
return Html::a('', ['ticket-delete', 'id' => $model->id, 'from' => 'index'], [
'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]);
},
],
],
]); ?>