mirror of
https://github.com/crmeb/CRMEB.git
synced 2026-02-14 11:34:02 +00:00
新增组合数据编辑和添加select,修复之前多个选择冲突
This commit is contained in:
parent
89d74a3ca6
commit
0884b466c8
@ -174,7 +174,7 @@ class SystemAdmin extends AuthController
|
||||
/**
|
||||
* 个人资料 展示
|
||||
* */
|
||||
public function adminInfo(){
|
||||
public function admininfo(){
|
||||
$adminInfo = $this->adminInfo;//获取当前登录的管理员
|
||||
$this->assign('adminInfo',$adminInfo);
|
||||
return $this->fetch();
|
||||
|
||||
@ -57,6 +57,7 @@ class SystemGroup extends AuthController
|
||||
public function save(Request $request)
|
||||
{
|
||||
$params = Util::postMore([
|
||||
['id',''],
|
||||
['name',''],
|
||||
['config_name',''],
|
||||
['info',''],
|
||||
@ -66,7 +67,10 @@ class SystemGroup extends AuthController
|
||||
//数据组名称判断
|
||||
if(!$params['name'])return Json::fail('请输入数据组名称!');
|
||||
if(!$params['config_name'])return Json::fail('请输入配置名称!');
|
||||
if(GroupModel::be($params['config_name'],'config_name')) return Json::fail('数据关键字已存在!');
|
||||
//判断ID是否存在,存在就是编辑,不存在就是添加
|
||||
if(!$params['id']){
|
||||
if(GroupModel::be($params['config_name'],'config_name')) return Json::fail('数据关键字已存在!');
|
||||
}
|
||||
$data["name"] = $params['name'];
|
||||
$data["config_name"] = $params['config_name'];
|
||||
$data["info"] = $params['info'];
|
||||
@ -85,9 +89,36 @@ class SystemGroup extends AuthController
|
||||
}
|
||||
}
|
||||
$data["fields"] = json_encode($data["fields"]);
|
||||
GroupModel::set($data);
|
||||
return Json::successful('添加数据组成功!');
|
||||
//判断ID是否存在,存在就是编辑,不存在就是添加
|
||||
if(!$params['id']) {
|
||||
GroupModel::set($data);
|
||||
return Json::successful('添加数据组成功!');
|
||||
}else{
|
||||
GroupModel::edit($data,$params['id']);
|
||||
return Json::successful('编辑数据组成功!');
|
||||
}
|
||||
}
|
||||
|
||||
/**编辑数组
|
||||
* @param $id
|
||||
*/
|
||||
public function edit($id)
|
||||
{
|
||||
$Groupinfo = GroupModel::get($id);
|
||||
$fields = json_decode($Groupinfo['fields'],true);
|
||||
$typelist = [];
|
||||
foreach ($fields as $key => $v){
|
||||
$typelist[$key]['name']['value'] = $v['name'];
|
||||
$typelist[$key]['title']['value'] = $v['title'];
|
||||
$typelist[$key]['type']['value'] = $v['type'];
|
||||
$typelist[$key]['param']['value'] = $v['param'];
|
||||
}
|
||||
$Groupinfo['fields'] = json_encode($typelist);
|
||||
$this->assign(compact('Groupinfo'));
|
||||
$this->assign(['title'=>'添加数据组','save'=>Url::build('save')]);
|
||||
return $this->fetch();
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除指定资源
|
||||
*
|
||||
|
||||
@ -46,32 +46,52 @@ class SystemGroupData extends AuthController
|
||||
$Fields = GroupModel::getField($gid);
|
||||
$f = array();
|
||||
foreach ($Fields["fields"] as $key => $value) {
|
||||
if($value["type"] == "input")
|
||||
$f[] = Form::input($value["title"],$value["name"]);
|
||||
else if($value["type"] == "textarea")
|
||||
$f[] = Form::input($value["title"],$value["name"])->type('textarea')->placeholder($value['param']);
|
||||
else if($value["type"] == "radio") {
|
||||
$params = explode("-", $value["param"]);
|
||||
foreach ($params as $index => $param) {
|
||||
$info[$index]["value"] = $param;
|
||||
$info[$index]["label"] = $param;
|
||||
$info = [];
|
||||
if(!empty($value["param"])){
|
||||
$value["param"] = str_replace("\r\n","\n",$value["param"]);//防止不兼容
|
||||
$params = explode("\n",$value["param"]);
|
||||
if(is_array($params) && !empty($params)){
|
||||
foreach ($params as $index => $v) {
|
||||
$vl = explode('=',$v);
|
||||
if(!empty($vl[0]) && !empty($vl[1])){
|
||||
$info[$index]["value"] = $vl[0];
|
||||
$info[$index]["label"] = $vl[1];
|
||||
}
|
||||
}
|
||||
}
|
||||
$f[] = Form::radio($value["title"],$value["name"],$info[0]["value"])->options($info);
|
||||
}else if($value["type"] == "checkbox"){
|
||||
$params = explode("-",$value["param"]);
|
||||
foreach ($params as $index => $param) {
|
||||
$info[$index]["value"] = $param;
|
||||
$info[$index]["label"] = $param;
|
||||
}
|
||||
$f[] = Form::checkbox($value["title"],$value["name"],$info[0])->options($info);
|
||||
}else if($value["type"] == "upload")
|
||||
$f[] = Form::frameImageOne($value["title"],$value["name"],Url::build('admin/widget.images/index',array('fodder'=>$value["title"])))->icon('image');
|
||||
else if($value['type'] == 'uploads')
|
||||
$f[] = Form::frameImages($value["title"],$value["name"],Url::build('admin/widget.images/index',array('fodder'=>$value["title"])))->maxLength(5)->icon('images')->width('100%')->height('550px')->spin(0);
|
||||
}
|
||||
|
||||
switch ($value["type"]){
|
||||
case 'input':
|
||||
$f[] = Form::input($value["title"],$value["name"]);
|
||||
break;
|
||||
case 'textarea':
|
||||
$f[] = Form::input($value["title"],$value["name"])->type('textarea')->placeholder($value['param']);
|
||||
break;
|
||||
case 'radio':
|
||||
$f[] = Form::radio($value["title"],$value["name"],$info[0]["value"])->options($info);
|
||||
break;
|
||||
case 'checkbox':
|
||||
$f[] = Form::checkbox($value["title"],$value["name"],$info[0])->options($info);
|
||||
break;
|
||||
case 'select':
|
||||
$f[] = Form::select($value["title"],$value["name"],$info[0])->options($info)->multiple(false);
|
||||
break;
|
||||
case 'upload':
|
||||
$f[] = Form::frameImageOne($value["title"],$value["name"],Url::build('admin/widget.images/index',array('fodder'=>$value["title"])))->icon('image');
|
||||
break;
|
||||
case 'uploads':
|
||||
$f[] = Form::frameImages($value["title"],$value["name"],Url::build('admin/widget.images/index',array('fodder'=>$value["title"])))->maxLength(5)->icon('images')->width('100%')->height('550px')->spin(0);
|
||||
break;
|
||||
default:
|
||||
$f[] = Form::input($value["title"],$value["name"]);
|
||||
break;
|
||||
|
||||
}
|
||||
}
|
||||
$f[] = Form::number('sort','排序',1);
|
||||
$f[] = Form::radio('status','状态',1)->options([['value'=>1,'label'=>'显示'],['value'=>2,'label'=>'隐藏']]);
|
||||
$form = Form::make_post_form('添加数据',$f,Url::build('save',compact('gid')));
|
||||
$form = Form::make_post_form('添加数据',$f,Url::build('save',compact('gid')),2);
|
||||
$this->assign(compact('form'));
|
||||
return $this->fetch('public/form-builder');
|
||||
}
|
||||
@ -127,36 +147,59 @@ class SystemGroupData extends AuthController
|
||||
$GroupDataValue = json_decode($GroupData["value"],true);
|
||||
$Fields = GroupModel::getField($gid);
|
||||
$f = array();
|
||||
foreach ($Fields["fields"] as $key => $value) {
|
||||
if($value["type"] == "input") $f[] = Form::input($value["title"],$value["name"],$GroupDataValue[$value["title"]]["value"]);
|
||||
if($value["type"] == "textarea") $f[] = Form::input($value["title"],$value["name"],$GroupDataValue[$value["title"]]["value"])->type('textarea');
|
||||
if($value["type"] == "radio"){
|
||||
$params = explode("-",$value["param"]);
|
||||
foreach ($params as $index => $param) {
|
||||
$info[$index]["value"] = $param;
|
||||
$info[$index]["label"] = $param;
|
||||
foreach ($Fields['fields'] as $key => $value) {
|
||||
$info = [];
|
||||
if(!empty($value["param"])){
|
||||
$value["param"] = str_replace("\r\n","\n",$value["param"]);//防止不兼容
|
||||
$params = explode("\n",$value["param"]);
|
||||
if(is_array($params) && !empty($params)){
|
||||
foreach ($params as $index => $v) {
|
||||
$vl = explode('=',$v);
|
||||
if(!empty($vl[0]) && !empty($vl[1])){
|
||||
$info[$index]["value"] = $vl[0];
|
||||
$info[$index]["label"] = $vl[1];
|
||||
}
|
||||
}
|
||||
}
|
||||
$f[] = Form::radio($value["title"],$value["name"],$GroupDataValue[$value["title"]]["value"])->options($info);
|
||||
}
|
||||
if($value["type"] == "checkbox"){
|
||||
$params = explode("-",$value["param"]);
|
||||
foreach ($params as $index => $param) {
|
||||
$info[$index]["value"] = $param;
|
||||
$info[$index]["label"] = $param;
|
||||
}
|
||||
$f[] = Form::checkbox($value["title"],$value["name"],$GroupDataValue[$value["title"]]["value"])->options($info);
|
||||
}
|
||||
if($value["type"] == "upload"){
|
||||
$image = is_string($GroupDataValue[$value["title"]]["value"])?$GroupDataValue[$value["title"]]["value"]:$GroupDataValue[$value["title"]]["value"][0];
|
||||
$f[] = Form::frameImageOne($value["title"],$value["name"],Url::build('admin/widget.images/index',array('fodder'=>$value["title"])),$image)->icon('image');
|
||||
}
|
||||
else if($value['type'] == 'uploads') {
|
||||
$f[] = Form::frameImages($value["title"], $value["name"], Url::build('admin/widget.images/index', array('fodder' => $value["title"])), $GroupDataValue[$value["title"]]["value"])->maxLength(5)->icon('images')->width('100%')->height('550px')->spin(0);
|
||||
switch ($value['type']){
|
||||
case 'input':
|
||||
$f[] = Form::input($value['title'],$value['name'],$GroupDataValue[$value['title']]['value']);
|
||||
break;
|
||||
case 'textarea':
|
||||
$f[] = Form::input($value['title'],$value['name'],$GroupDataValue[$value['title']]['value'])->type('textarea');
|
||||
break;
|
||||
case 'radio':
|
||||
|
||||
$f[] = Form::radio($value['title'],$value['name'],$GroupDataValue[$value['title']]['value'])->options($info);
|
||||
break;
|
||||
case 'checkbox':
|
||||
$f[] = Form::checkbox($value['title'],$value['name'],$GroupDataValue[$value['title']]['value'])->options($info);
|
||||
break;
|
||||
case 'upload':
|
||||
if(!empty($GroupDataValue[$value['title']]['value'])){
|
||||
$image = is_string($GroupDataValue[$value['title']]['value']) ? $GroupDataValue[$value['title']]['value'] : $GroupDataValue[$value['title']]['value'][0];
|
||||
}else{
|
||||
$image = '';
|
||||
}
|
||||
$f[] = Form::frameImageOne($value['title'],$value['name'],Url::build('admin/widget.images/index',array('fodder'=>$value['title'])),$image)->icon('image');
|
||||
break;
|
||||
case 'uploads':
|
||||
$images = !empty($GroupDataValue[$value['title']]['value']) ? $GroupDataValue[$value['title']]['value']:[];
|
||||
$f[] = Form::frameImages($value['title'],$value['name'],Url::build('admin/widget.images/index', array('fodder' => $value['title'])),$images)->maxLength(5)->icon('images')->width('100%')->height('550px')->spin(0);
|
||||
break;
|
||||
case 'select':
|
||||
$f[] = Form::select($value['title'],$value['name'],$GroupDataValue[$value['title']]['value'])->setOptions($info);
|
||||
break;
|
||||
default:
|
||||
$f[] = Form::input($value['title'],$value['name'],$GroupDataValue[$value['title']]['value']);
|
||||
break;
|
||||
|
||||
}
|
||||
}
|
||||
$f[] = Form::input('sort','排序',$GroupData["sort"]);
|
||||
$f[] = Form::radio('status','状态',$GroupData["status"])->options([['value'=>1,'label'=>'显示'],['value'=>2,'label'=>'隐藏']]);
|
||||
$form = Form::make_post_form('添加用户通知',$f,Url::build('update',compact('id')));
|
||||
$form = Form::make_post_form('添加用户通知',$f,Url::build('update',compact('id')),2);
|
||||
$this->assign(compact('form'));
|
||||
return $this->fetch('public/form-builder');
|
||||
}
|
||||
|
||||
@ -17,38 +17,48 @@
|
||||
<i-input v-model="formData.info" placeholder="请输入数据组简介"></i-input>
|
||||
</Form-Item>
|
||||
<Form-Item v-for="(item, index) in formData.typelist" :label="'字段' + (index+1)">
|
||||
<row ref="typelist">
|
||||
<i-col span="5">
|
||||
<Form-Item>
|
||||
<i-input :placeholder="item.name.placeholder" v-model="item.name.value"></i-input>
|
||||
</Form-Item>
|
||||
<row type="flex" ref="typelist" align="middle">
|
||||
<i-col span="10">
|
||||
<row>
|
||||
<i-col span="23">
|
||||
<Form-Item>
|
||||
<i-input :placeholder="item.name.placeholder" v-model="item.name.value"></i-input>
|
||||
</Form-Item>
|
||||
</i-col>
|
||||
</row>
|
||||
<row>
|
||||
<i-col span="23">
|
||||
<Form-Item>
|
||||
<i-input :placeholder="item.title.placeholder" v-model="item.title.value"></i-input>
|
||||
</Form-Item>
|
||||
</i-col>
|
||||
</row>
|
||||
<row>
|
||||
<i-col span="23">
|
||||
<Form-Item>
|
||||
<i-select :placeholder="item.type.placeholder" v-model="item.type.value">
|
||||
<i-option value="input">文本框</i-option>
|
||||
<i-option value="textarea">多行文本框</i-option>
|
||||
<i-option value="radio">单选框</i-option>
|
||||
<i-option value="checkbox">多选框</i-option>
|
||||
<i-option value="select">下拉选择</i-option>
|
||||
<i-option value="upload">单文件上传</i-option>
|
||||
<i-option value="uploads">多文件上传</i-option>
|
||||
</i-select>
|
||||
</Form-Item>
|
||||
</i-col>
|
||||
</row>
|
||||
</i-col>
|
||||
<i-col span="5">
|
||||
<i-col span="12">
|
||||
<Form-Item>
|
||||
<i-input :placeholder="item.title.placeholder" v-model="item.title.value"></i-input>
|
||||
</Form-Item>
|
||||
</i-col>
|
||||
<i-col span="5">
|
||||
<Form-Item>
|
||||
<i-select :placeholder="item.type.placeholder" v-model="item.type.value">
|
||||
<i-option value="input">文本框</i-option>
|
||||
<i-option value="textarea">多行文本框</i-option>
|
||||
<i-option value="radio">单选框</i-option>
|
||||
<i-option value="checkbox">多选框</i-option>
|
||||
<i-option value="upload">单文件上传</i-option>
|
||||
<i-option value="uploads">多文件上传</i-option>
|
||||
</i-select>
|
||||
</Form-Item>
|
||||
</i-col>
|
||||
<i-col span="7">
|
||||
<Form-Item>
|
||||
<i-input :placeholder="item.param.placeholder" v-model="item.param.value"></i-input>
|
||||
<i-input type="textarea" rows="4" :placeholder="item.param.placeholder" v-model="item.param.value"></i-input>
|
||||
</Form-Item>
|
||||
</i-col>
|
||||
<i-col span="2" style="display:inline-block; text-align:right;">
|
||||
<i-button type="primary" icon="close-round" @click="removeType(index)"></i-button>
|
||||
</i-col>
|
||||
</row>
|
||||
</row>
|
||||
</Form-Item>
|
||||
<Form-Item><i-button type="primary" @click="addType">添加字段</i-button></Form-Item>
|
||||
<Form-Item :class="'add-submit-item'">
|
||||
@ -85,7 +95,7 @@
|
||||
value: ''
|
||||
},
|
||||
param: {
|
||||
placeholder: "字段参数男-女",
|
||||
placeholder: "参数方式例如:\n1=白色\n2=红色\n3=黑色",
|
||||
value: ''
|
||||
}
|
||||
})
|
||||
|
||||
126
application/admin/view/setting/system_group/edit.php
Normal file
126
application/admin/view/setting/system_group/edit.php
Normal file
@ -0,0 +1,126 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="zh-CN">
|
||||
<head>
|
||||
{include file="public/head"}
|
||||
<title>{$title}</title>
|
||||
</head>
|
||||
<body>
|
||||
<div id="form-add" class="mp-form" v-cloak="">
|
||||
<i-Form :model="formData" :label-width="80" >
|
||||
<i-input v-model="formData.id" type="hidden" placeholder="请输入数据组名称"></i-input>
|
||||
<Form-Item label="数据组名称">
|
||||
<i-input v-model="formData.name" placeholder="请输入数据组名称"></i-input>
|
||||
</Form-Item>
|
||||
<Form-Item label="数据字段">
|
||||
<i-input v-model="formData.config_name" placeholder="请输入数据字段例如:site_url"></i-input>
|
||||
</Form-Item>
|
||||
<Form-Item label="数据组简介">
|
||||
<i-input v-model="formData.info" placeholder="请输入数据组简介"></i-input>
|
||||
</Form-Item>
|
||||
<Form-Item v-for="(item, index) in formData.typelist" :label="'字段' + (index+1)">
|
||||
<row type="flex" ref="typelist" align="middle">
|
||||
<i-col span="10">
|
||||
<row>
|
||||
<i-col span="23">
|
||||
<Form-Item>
|
||||
<i-input :placeholder="item.name.placeholder" v-model="item.name.value"></i-input>
|
||||
</Form-Item>
|
||||
</i-col>
|
||||
</row>
|
||||
<row>
|
||||
<i-col span="23">
|
||||
<Form-Item>
|
||||
<i-input :placeholder="item.title.placeholder" v-model="item.title.value"></i-input>
|
||||
</Form-Item>
|
||||
</i-col>
|
||||
</row>
|
||||
<row>
|
||||
<i-col span="23">
|
||||
<Form-Item>
|
||||
<i-select :placeholder="item.type.placeholder" v-model="item.type.value">
|
||||
<i-option value="input">文本框</i-option>
|
||||
<i-option value="textarea">多行文本框</i-option>
|
||||
<i-option value="radio">单选框</i-option>
|
||||
<i-option value="checkbox">多选框</i-option>
|
||||
<i-option value="select">下拉选择</i-option>
|
||||
<i-option value="upload">单文件上传</i-option>
|
||||
<i-option value="uploads">多文件上传</i-option>
|
||||
</i-select>
|
||||
</Form-Item>
|
||||
</i-col>
|
||||
</row>
|
||||
</i-col>
|
||||
<i-col span="12">
|
||||
<Form-Item>
|
||||
<i-input type="textarea" rows="4" :placeholder="item.param.placeholder" v-model="item.param.value"></i-input>
|
||||
</Form-Item>
|
||||
</i-col>
|
||||
<i-col span="2" style="display:inline-block; text-align:right;">
|
||||
<i-button type="primary" icon="close-round" @click="removeType(index)"></i-button>
|
||||
</i-col>
|
||||
</row>
|
||||
</row>
|
||||
</Form-Item>
|
||||
<Form-Item><i-button type="primary" @click="addType">添加字段</i-button></Form-Item>
|
||||
<Form-Item :class="'add-submit-item'">
|
||||
<i-Button :type="'primary'" :html-type="'submit'" :size="'large'" :long="true" @click.prevent="submit">提交</i-Button>
|
||||
</Form-Item>
|
||||
</i-Form>
|
||||
</div>
|
||||
<script>
|
||||
$eb = parent._mpApi;
|
||||
mpFrame.start(function(Vue){
|
||||
new Vue({
|
||||
el:"#form-add",
|
||||
data:{
|
||||
formData:{
|
||||
id: '{$Groupinfo.id}',
|
||||
name: '{$Groupinfo.name}',
|
||||
config_name: '{$Groupinfo.config_name}',
|
||||
typelist: {$Groupinfo.fields},
|
||||
info:'{$Groupinfo.info}'
|
||||
}
|
||||
},
|
||||
methods:{
|
||||
addType: function(){
|
||||
this.formData.typelist.push({
|
||||
name: {
|
||||
placeholder: "字段名称:姓名",
|
||||
value: ''
|
||||
},
|
||||
title: {
|
||||
placeholder: "字段配置名:name",
|
||||
value: ''
|
||||
},
|
||||
type: {
|
||||
placeholder: "字段类型",
|
||||
value: ''
|
||||
},
|
||||
param: {
|
||||
placeholder: "参数方式例如:\n1=白色\n2=红色\n3=黑色",
|
||||
value: ''
|
||||
}
|
||||
})
|
||||
},
|
||||
removeType: function(index){
|
||||
this.formData.typelist.splice(index,1);
|
||||
},
|
||||
submit: function(){
|
||||
$eb.axios.post("{$save}",this.formData).then((res)=>{
|
||||
if(res.status && res.data.code == 200)
|
||||
return Promise.resolve(res.data);
|
||||
else
|
||||
return Promise.reject(res.data.msg || '添加失败,请稍候再试!');
|
||||
}).then((res)=>{
|
||||
$eb.message('success',res.msg || '操作成功!');
|
||||
$eb.closeModalFrame(window.name);
|
||||
}).catch((err)=>{
|
||||
this.loading=false;
|
||||
$eb.message('error',err);
|
||||
});
|
||||
}
|
||||
}
|
||||
});
|
||||
});
|
||||
</script>
|
||||
</body>
|
||||
@ -60,6 +60,7 @@
|
||||
</td>
|
||||
<td class="text-center">
|
||||
<a class="btn btn-info btn-xs" href="{:Url('setting.systemGroupData/index',array('gid'=>$vo['id']))}"><i class="fa fa-paste"></i> 数据列表</a>
|
||||
<button class="btn btn-info btn-xs" onclick="$eb.createModalFrame(this.innerText,'{:Url('edit',array('id'=>$vo['id']))}')" ><i class="fa fa-paste"></i> 编辑</button>
|
||||
<button class="btn btn-warning btn-xs" data-url="{:Url('delete',array('id'=>$vo['id']))}" type="button"><i class="fa fa-warning"></i> 删除</button>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -60,7 +60,9 @@
|
||||
</td>
|
||||
{volist name="fields" id="item"}
|
||||
<td class="text-center">
|
||||
{notempty name="$vo.value[$item['title']]['value']"}
|
||||
{$vo.value[$item['title']]['value']}
|
||||
{/notempty}
|
||||
</td>
|
||||
{/volist}
|
||||
<td class="text-center">
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user