笔记 · · 29 阅读

rageframe常用

yii2
Model Class
common\models\operations\PowerElectricCabinet

Search Model Class
common\models\operations\PowerElectricCabinetSearch

Controller Class
backend\modules\power\controllers\PowerElectricCabinetController

View Path
E:\51huandian\power_exchange\backend/modules/power/views/power-electric-cabinet

E:\51huandian\power_exchange\backend/modules/power/views/power-battery

vue.js 
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>

### 获取配置项数组
$isArr = \common\helpers\UtilHelper::getOptionValue('whether');
$equipmentStateArr = \common\helpers\UtilHelper::getOptionValue('equipment_state');
$propertyStateArr = \common\helpers\UtilHelper::getOptionValue('property_state');

### 记录日志 2020-7-17 09:50:17 lmy
Yii::getLogger()->log("开始写自定义日志",Logger::LEVEL_ERROR);
Yii::trace("trace,开发调试时候记录");
Yii::error("error,错误日志");
Yii::warning("warning,警告信息");
Yii::info("info,记录操作提示");

### 记录用户提交的数据 2020-7-17 20:08:17 lmy
foreach ($model->getDirtyAttributes() as $k=>$v){
if($model->getOldAttributes()[$k] != $v){
dump($k.' is changed');
}
}
dump($model->getOldAttributes());
dump($model->getDirtyAttributes());die;

<?= ExportMenu::widget([
'dataProvider' => $dataProvider,
'columns' => $columns,
'encoding' => 'gb2312',
'dropdownOptions' => [
'class' => 'btn btn-default'
],
'exportConfig' => [
ExportMenu::FORMAT_TEXT => false,
ExportMenu::FORMAT_PDF => false,
ExportMenu::FORMAT_EXCEL_X => false,
],
'columnSelectorOptions' => [
'label' => '选择字段',
'class' => 'btn btn-default'
],
'filename' => $this->title . date('Y-m-d'),
]) ?>

$realname = Yii::$app->request->get('realname');
$mobile = Yii::$app->request->get('mobile');
[
'label' => '姓名',
'value' => function ($model) {
return $model->user->realname;
},
'filter' => Html::textInput('realname',$realname,[
'class'=>'form-control'
]),
],

// 获取用户手机号和姓名 2020-8-4 16:50:26 lmy
$user_arr = \common\models\member\Member::find()->where(['member_level' => 4, 'status' => 1])->select('id,mobile,realname')->asArray()->all();
$map = [];
foreach ($user_arr as $k => $v){
$map[$k]['id'] = $v['id'];
$map[$k]['mobile'] = $v['mobile'].'  '.$v['realname'];
}
$qudaoList = ArrayHelper::map($map, 'id', 'mobile');

### 禁用搜索
[
'attribute'=>'day',
'filter'=>false,
],

[
'attribute'=>'day',
'filter'=>false,
'label'=>'',
],

### 时间显示 
[
'attribute' => 'created_at',
'label' => '上报时间',
'format' => ['date', 'php:Y-m-d H:i:s'],
'filter'=>false,
],

### 时间单日搜索
[
'attribute' => 'start_time',
'filter' => \kartik\widgets\DatePicker::widget([
'name' => 'SearchModel[st_time]',
'value' => Yii::$app->request->get('SearchModel')['st_time'] ? Yii::$app->request->get('SearchModel')['st_time'] : '',
'language' => 'zh-CN',
'layout' => '{picker}{input}',
'pluginOptions' => [
'format' => 'yyyy-mm-dd',
'todayHighlight' => true,// 今日高亮
'autoclose' => true,// 选择后自动关闭
'todayBtn' => true,// 今日按钮显示
],
'options' => [
'class' => 'form-control no_bor',
]
]),
'value'=>function($model){
return date('Y-m-d H:i:s',$model->start_time);
},
'format' => 'raw',
],

### 时间区间搜索
$ca_time = Yii::$app->request->get('SearchModel')['ca_time'];
$ca_time && $dataProvider->query->andFilterWhere(['between', 'created_at', strtotime(explode(' - ', $ca_time)[0]), strtotime(explode(' - ', $ca_time)[1])]);

[
'attribute'=>'created_at',
'label'=>'注册时间',
'filter' => \kartik\daterange\DateRangePicker::widget([
'name' => 'SearchModel[ca_time]',
'value' => Yii::$app->request->get('SearchModel')['ca_time'] ? Yii::$app->request->get('SearchModel')['ca_time'] : '',
]),
'format' => 'raw',
'value'=>function($model){
return Yii::$app->formatter->asDatetime($model->created_at);
},
],

$ua_time = Yii::$app->request->get('SearchModel')['ua_time'];
$ua_time && $dataProvider->query->andFilterWhere(['between', 'rf_member_buy_set_meal.'.'pay_time', strtotime(explode(' - ', $ua_time)[0]), strtotime(explode(' - ', $ua_time)[1])]);
[
'attribute'=>'user.meal.pay_time',
'filter' => \kartik\daterange\DateRangePicker::widget([
// 加时分秒搜索
'pluginOptions' => [
'timePicker'=>true,
'locale' => [
'format' => 'YYYY-MM-DD HH:mm:ss',
]
],
'name' => 'SearchModel[ua_time]',
'value' => Yii::$app->request->get('SearchModel')['ua_time'] ? Yii::$app->request->get('SearchModel')['ua_time'] : '',
]),
'format' => 'raw',
'value'=>function($model){
return Yii::$app->formatter->asDatetime($model->user->meal->pay_time);
},
],

[
'label'=>'上报时间',
'attribute'=>'updated_at',
'filter' => \kartik\daterange\DateRangePicker::widget([
// 加时分秒搜索
'pluginOptions' => [
'timePicker'=>true,
'locale' => [
'format' => 'YYYY-MM-DD HH:mm:ss',
]
],
'name' => 'SearchModel[ua_time]',
'value' => Yii::$app->request->get('SearchModel')['ua_time'] ? Yii::$app->request->get('SearchModel')['ua_time'] : '',
]),
'format' => 'raw',
'value'=>function($model){
return Yii::$app->formatter->asDatetime($model->updated_at);
},
],

### 下拉框搜索
$operation_status_arr = Yii::$app->params['power_return']['operation_status'];
[
'attribute' => 'operation_status',
'value' => function($model)use($operation_status_arr) {
return $operation_status_arr[$model->operation_status];
},
'filter' => Html::activeDropDownList($searchModel, 'operation_status', $operation_status_arr, [
'prompt' => '全部',
'class' => 'form-control'
]
),
'footerOptions' => ['class' => 'hide']
],

### 下拉框模糊搜索
[
'attribute' => 'backendMember.username',
'contentOptions' => [
'align' => 'center',
],
'filter'=>\kartik\select2\Select2::widget([
'name' => 'SearchModel[backend_id]',
'data' => $memberList,
'value' =>$searchModel->backend_id,
'options' => ['placeholder' => '请选择'.$searchModel->attributeLabels()['backend_id']],
'pluginOptions' => [
'allowClear' => true
],
])
],

<?= $form->field($model, 'new_battery_serial')->widget(\kartik\select2\Select2::class, [
'data' => $serial,
'options' => ['placeholder' => '请选择'],
'pluginOptions' => [
'allowClear' => true
],
]);?>

### ajax下拉搜索 2020-12-2 16:31:32 lmy
---控制器
if($q = Yii::$app->request->get('q')){
Yii::$app->response->format = \yii\web\Response::FORMAT_JSON;
//            $out = ['results' => ['id' => '', 'text' => '']];
$data = DataTuchongCat::find()
->select('name as id,name as text')
->andFilterWhere(['like', 'name', $q])
->indexBy('text')
->limit(50)
->asArray()
->all();

$out['results'] = array_values($data);
return $out;
}
---页面
[
'attribute' => 'cat',
'filter' => \kartik\select2\Select2::widget([
'name' => 'SearchModel[cat]',
//                                'data' => $catList,
'value' =>$searchModel->cat,
'options' => ['placeholder' => '搜索分类'],
'pluginOptions' => [
'allowClear' => true,
//          'minimumInputLength' => 2,
'language' => [
'errorLoading' => new JsExpression("function () { return '查询中...'; }"),
],
'ajax' => [
'url' => '',
'dataType' => 'json',
'data' => new JsExpression('function(params) { return {q:params.term}; }')
],
'escapeMarkup' => new JsExpression('function (markup) { return markup; }'),
'templateResult' => new JsExpression('function(res) { return res.text; }'),
'templateSelection' => new JsExpression('function (res) { return res.text; }'),
],
])
],

---表单 2020-12-23 11:43:40 lmy
<?= $form->field($model, 'pid')->widget(\kartik\select2\Select2::classname(), [
'data'=>$memberList,
'options' => ['multiple'=>false, 'placeholder' => '搜索用户姓名或手机号', 'value' => $model->pid],
'pluginOptions' => [
'allowClear' => true,
'minimumInputLength' => 1,
'language' => [
'errorLoading' => new JsExpression("function () { return '查询中...'; }"),
],
//                    'ajax' => [
//                        'url' => $url,
//                        'dataType' => 'json',
//                        'data' => new JsExpression('function(params) { return {q:params.term}; }')
//                    ],
'escapeMarkup' => new JsExpression('function (markup) { return markup; }'),
'templateResult' => new JsExpression('function(goods) { return goods.text; }'),
'templateSelection' => new JsExpression('function (goods) { return goods.text; }'),
],
])->label("选择上级"); ?>


### 搜索加颜色 2020-9-14 08:57:27 lmy
[
'attribute' => 'bat_serial',
'value' => function ($model) use($searchModel){
$_tag=$model->selfBattery;
if(!empty($_tag)){
$tagName="";
foreach ($_tag as $key => $value) {
if($value->bat_serial){
$tagName.=$value->bat_serial.' 仓门'.$value->door_num.'<br>';
}
}
$key = $searchModel->bat_serial;
return  str_replace($key, '<span style="color:#ff7e68">' .$key.'</span>',$tagName);
}
return '';
},
'format'=>'raw',
],

### ajax 操作按钮
'bind-ip' => function ($url, $model, $key) {
return Html::edit(['bind-ip', 'id' =>$model->id],'IP绑定',[
'data-toggle' => 'modal',
'data-target' => '#ajaxModalLg',
'class' => 'btn btn-success btn-sm',
]);
},

### 时间转化
Yii::$app->formatter->asDatetime()

###
header('Content-type:text/html;charset=utf-8');
set_time_limit(0);
ini_set('max_execution_time', '0');
ini_set('memory_limit', '2048M');

### excel导出
<?= Html::Excel('excel', $dataProvider, $columns,$this->title) ?>

### 获取城市
[
'label'=>'城市',
'attribute'=>'first_city_code',
'filter'=>false,
'value'=>function($model){
return Yii::$app->services->provinces->getName($model->first_city_code);
}
],

### GridView 行处理
.label-green{
    color: #ff710d;
}
'rowOptions' => function($model, $key, $index, $grid) {
if ($model->admin_id){
return ['class' => 'label-green'];
}
},

### 图片处理
[
'attribute'=>'ask_imgs',
'value'=>function($model){
return \common\widgets\webfiles\Files::widget([
'name' => 'files',
'value' => $model->ask_imgs,
'width' => '40',
'height' => '40',
]);
},
'format'=>'raw',
'filter' => false,
],

### 城市查询
$cityList = Provinces::find()->andWhere(['level'=>2])->select('title')->indexBy('id')->column();

### 自定义按钮 可以设置权限
Html::tag2('chongqi', '批量重启电柜', array_merge(
[
'id'=>'all_restart',
'class' => 'btn btn-warning btn-sm',
]
))

### 获取已产生记录城市 2020-10-28 09:49:34 lmy
$city_codes = Member::find()->select('first_city_code')->groupBy('first_city_code')->column();
$cityLists = Provinces::find()->indexBy('id')->select('title')->where(['in','id',$city_codes])->column();

[
'label'=>'城市',
'attribute' => 'first_city_code',
'contentOptions' => [
'align' => 'center',
],
'filter'=>\kartik\select2\Select2::widget([
'name' => 'SearchModel[first_city_code]',
'data' => $cityLists,
'value' =>$searchModel->first_city_code,
'options' => ['placeholder' => '请选择城市'],
'pluginOptions' => [
'allowClear' => true
],
]),
'value'=>function($model)use($cityLists){
return $cityLists[$model->first_city_code];
}
],


### 省市区联动 2020-11-3 09:39:19 lmy
$form = \yii\widgets\ActiveForm::begin([
    'id' => $searchModel->formName(),
]);

[
'label'=>'省市区',
'filter' => \common\widgets\provinces\Provinces::widget([
'form' => $form,
'model' => $searchModel,
'template' => 'short',
'provincesName' => 'province_id',// 省字段名
'cityName' => 'city_id',// 市字段名
'areaName' => 'area_id',// 区字段名
]),
'value' => function ($model) use ($provinceList,$cityList,$areaList) {
return $provinceList[$model->province_id] .'-'.$cityList[$model->city_id].'-'.$areaList[$model->area_id];
},
],

<script>
    $('.form-group').removeClass('required')
    $('.form-group>label').hide()
</script>


// 省市区 2020-12-2 14:17:39 lmy
//省
public function getProvinceTable()
{
return $this->hasOne(Provinces::class, ['id' => 'province_id']);
}

//市
public function getCityTable()
{
return $this->hasOne(Provinces::class, ['id' => 'city_id']);
}

//区
public function getAreaTable()
{
return $this->hasOne(Provinces::class, ['id' => 'area_id']);
}

[
'label' => '省',
'value' => function ($model) {
return $model->provinceTable->title;
}
],
[
'label' => '市',
'value' => function ($model) {
return $model->cityTable->title;
}
],
[
'label' => '区',
'value' => function ($model) {
return $model->areaTable->title;
}
],

layer.prompt({title: '请填写操作备注', formType: 2}, function(text, index){
var data = '{"msgType":'+msgType+',"memberId":'+memberId+',"devId":"'+devId.trim()+'","doorId":"'+doorid+'","value":"'+value+'","semaphore":"'+semaphore+'","remark":"'+text+'"}';
sign(data);
layer.close(index);
});

mongodb://@192.168.131.128:27017

### 批量插入 2020-12-14 16:26:01 lmy
$userkey=['login','password','nicename','email','create_time'];//测试数据键

$uservale=array(
'0'=>array('admin2','2b571c42c2d79deb9872aeb0befc0124','admin','1111@qq.com','2017-07-21 15:47:07'),
'1'=>array('admin1','2b571c42c2d79deb9872aeb0befc0124','admin','2222@qq.com','2017-07-21 15:47:07'),
'2'=>array('admin55','2b571c42c2d79deb9872aeb0befc0124','admin','3333@qq.com','2017-07-21 15:47:07'),
'3'=>array('admin66','2b571c42c2d79deb9872aeb0befc0124','admin','4444@qq.com','2017-07-21 15:47:07'),
);//测试数据值

$res= \Yii::$app->db->createCommand()->batchInsert(Users::tableName(), $userkey, $uservale)->execute();//执行批量添加

### 表单省市区 2020-12-22 10:33:32 lmy
<?= \common\widgets\provinces\Provinces::widget([
'form' => $form,
'model' => $model,
'provincesName' => 'province_id',// 省字段名
'cityName' => 'city_id',// 市字段名
'areaName' => 'area_id',// 区字段名
'template' => 'long'
]); ?>