第一次提交

This commit is contained in:
bool 2019-12-23 18:25:50 +08:00
parent 177aaa9473
commit 257c886bc9
834 changed files with 248743 additions and 2 deletions

View file

@ -0,0 +1,5 @@
<?php

View file

@ -0,0 +1 @@

View file

@ -0,0 +1,29 @@
<?php
return array(
//'配置项'=>'配置值'
'SHOW_PAGE_TRACE'=>1, //显示调试信息
//数据库配置信息
'DB_TYPE' => 'mysql', // 数据库类型
'DB_HOST' => 'localhost', // 服务器地址
'DB_NAME' => 'wms', // 数据库名
'DB_USER' => 'root', // 用户名
'DB_PWD' => '', // 密码
'DB_PORT' => 3306, // 端口
'DB_PARAMS' => array(), // 数据库连接参数
'DB_PREFIX' => 'wms_', // 数据库表前缀
'DB_CHARSET'=> 'utf8', // 字符集
'DB_DEBUG' => TRUE, // 数据库调试模式 开启后可以记录SQL日志
//memcache配置
// 'DATA_CACHE_TYPE' => 'Memcache',
// 'MEMCACHED_HOST' => array('127.0.0.1','127.0.0.1'),
// 'MEMCACHED_PORT' => array('11211','11212'),
// 'DATA_CACHE_KEY'=>'think',
// 'SESSION_EXPIRE' => 60*60, //Memcache的session信息有效时间
// 'PERSISTENTID'=>'tp',//可选
// 'MEMECACHED_WEIGHT' => array(33,67),//可选
);

View file

@ -0,0 +1 @@

View file

@ -0,0 +1 @@

View file

@ -0,0 +1,66 @@
<?php
function ajax(){
IS_AJAX || die('无效的方式的提交方式');
}
//excel处理
function excel(){
//引入核心 class
require_once('./Public/Classes/PHPExcel.php');
require_once('./Public/Classes/PHPExcel/Writer/Excel2007.php');
$objPHPExcel = new PHPExcel();
//Set properties 设置文件属性
//创建人
$objPHPExcel->getProperties()->setCreator("Maarten Balliauw");
//最后修改人
$objPHPExcel->getProperties()->setLastModifiedBy("Maarten Balliauw");
//标题
$objPHPExcel->getProperties()->setTitle("Office 2007 XLSX Test Document");
//题目
$objPHPExcel->getProperties()->setSubject("Office 2007 XLSX Test Document");
//描述
$objPHPExcel->getProperties()->setDescription("Test document for Office 2007 XLSX, generated using PHP classes.");
//关键字
$objPHPExcel->getProperties()->setKeywords("office 2007 openxml php");
//种类
$objPHPExcel->getProperties()->setCategory("Test result file");
//设置当前的sheet
$objPHPExcel->setActiveSheetIndex(0);
//设置sheet的name
$objPHPExcel->getActiveSheet()->setTitle('Simple');
//设置单元格的值
$objPHPExcel->getActiveSheet()->setCellValue('A1', 'String');
$objPHPExcel->getActiveSheet()->setCellValue('A2', 12);
$objPHPExcel->getActiveSheet()->setCellValue('A3', true);
$objPHPExcel->getActiveSheet()->setCellValue('C5', '=SUM(C2:C4)');
$objPHPExcel->getActiveSheet()->setCellValue('B8', '=MIN(B2:C5)');
//在默认sheet后创建一个worksheet
echo date('H:i:s') . " Create new Worksheet object\n";
$objPHPExcel->createSheet();
$objWriter = PHPExcel_IOFactory::createWriter($objExcel, 'Excel5');
$objWriter-save('php://output');
}
//验证码校验
function check_verify($code, $id = ''){
$verify = new \Think\Verify();
return $verify->check($code, $id);
}
//验证权限 并跳转
function jumps($infos,$name){
if( !strstr( $infos,$name ) && !strstr( $infos,'---' ) ){
// dump(strstr( $infos,$name ) );
// dump(strstr( $infos,'---' ));
// die;
$url= 'http://'.$_SERVER['HTTP_HOST'].PHP_FILE.'/Public/nopower';
echo "<script language='javascript' type='text/javascript'>";
echo "location.href='".$url."'";
echo "</script>";
exit;
}
}

View file

@ -0,0 +1 @@

View file

@ -0,0 +1,7 @@
<?php
return array(
//'配置项'=>'配置值'
'AJAX_TIME' => 1500, //ajax 延时的毫秒
'SEARCH_TIME' => 500, //搜索延时毫秒
);

View file

@ -0,0 +1 @@

View file

@ -0,0 +1,174 @@
<?php
namespace Home\Controller;
use Think\Controller;
class AccountController extends PublicController {
public function index(){
//职位列表
$position=M('position')->field('id,name')->select();
//门店列表
$store=M('store')->field('id,name')->select();
//实现 分页 搜索
$res=D('User')->search();
$this->assign(array(
'res' => $res,
'empty' => '<tr><td colspan="9"><span class="empty">没有找到匹配的数据...</span></td></tr>',
'position' => $position,
'store' => $store,
)
);
$this->display('list');
}
//添加用户
public function add(){
if(I('post.')){
$data=I('post./a');
$model=D('User');
//检测是否是ajax
ajax();
//检验是否是有效数据
if($model->create($data,1)){
//添加
if( $model->add($data) ){
$this->success('添加成功!',U('Account/index')) && exit();
}
}else{
$this->error( $model->getError() );
}
}
//职位列表
$position=M('position')->field('id,name')->select();
//门店列表
$store=M('store')->field('id,name')->select();
// dump($store);
$this->assign(array(
'position' => $position,
'store' => $store
)
);
$this->display('add');
}
//编辑 修改
public function edit(){
//获取用户信息
$res=D('User')->search();
//职位列表
$position=M('position')->field('id,name')->select();
//门店列表
$store=M('store')->field('id,name')->select();
$this->assign(array(
'position' => $position,
'store' => $store,
'info' => $res['res'][0]
)
);
//执行修改
if(I('post.')){
$data=I('post./a');
$model=D('User');
//判断是否是ajax提交
ajax();
//检验是否是有效数据
if($model->create($data,2)){
//修改
if( $model->save($data) ){
$this->success('修改成功!',U('Account/index')) && exit();
}
}else{
$this->error( $model->getError() );
exit;
}
//乐观锁 返回json数据
$this->ajaxReturn( array('status'=>1,'info'=>'修改成功!') );
}
$this->display();
}
//修改用户状态
public function status(){
//如果get id存在
if( I('get.id/d') ){
$id=I('get.id/d');
$data['status']=I('get.status/d');
//判断是否是ajax提交
ajax();
//判断是否修改成功
if( M('user')->where(array('id'=>$id))->save($data) ){
//返回json数据
$this->ajaxReturn( array('status'=>1,'info'=>'修改成功!') );
}else{
$this->ajaxReturn( array('status'=>0,'info'=>'修改失败!') );
}
}
}
//删除用户
public function delete(){
//如果get id存在
if( I('get.id/d') ){
$id=I('get.id/d');
$model=D('user');
//判断是否删除成功
if( $model->delete($id) ){
$this->success('删除成功!',U('Account/index'));
}else{
$this->error( $model->getError() );
}
}
}
//信息展示
public function detail(){
//获取信息
if( I('get.id/d') ){
$res=D('User')->search();
$this->assign('info',$res['res'][0]);
}
$this->display();
}
}

View file

@ -0,0 +1,119 @@
<?php
namespace Home\Controller;
use Think\Controller;
class AdminController extends PublicController {
public function index(){
//获取角色列表
$Role=D('Role');
$info=$Role->field('id,role_name')->select();
$this->assign('role',$info);
//查询数据
$res=D('Admin')->search();
//分配
$this->assign(array(
'res' => $res,
'empty' => '<tr><td colspan="8"><span class="empty">没有找到匹配的数据...</span></td></tr>'
)
);
$this->display('list');
}
//添加用户
public function add(){
if(I('post.')){
$data=I('post./a'); //接受数据
$model=D('Admin');
//检测是否是ajax
ajax();
//检验是否是有效数据
if($model->create($data,1)){
//添加
if( $model->add($data) ){
$this->success('添加成功!',U('Admin/index')) && exit();
}
}else{
$this->error( $model->getError() );
}
}
//获取角色列表
$Role=D('Role');
$res=$Role->field('id,role_name')->select();
$this->assign('role',$res);
$this->display('add');
}
//编辑 修改
public function edit(){
//获取信息
$info=D('Admin')->search();
//获取角色列表
$Role=D('Role');
$res=$Role->field('id,role_name')->select();
$this->assign(array(
'role' => $res,
'info' => $info['res'][0]
)
);
//修改
if(I('post.')){
$data=I('post./a'); //接受数据
//检测是否是ajax
ajax();
$model=D('Admin');
//检验是否是有效数据
if($model->create($data,2)){
//修改
if( $model->save($data) ){
$this->success('修改成功!',U('Admin/index')) && exit();
}
}else{
$this->error( $model->getError() );
}
//乐观锁 返回json数据
$this->ajaxReturn( array('status'=>1,'info'=>'修改成功!') );
}
$this->display();
}
//删除用户
public function delete(){
//如果get id存在
if( I('get.id/d') ){
$id=I('get.id/d');
$model=D('Admin');
//判断是否删除成功
if( $model->delete($id) ){
$this->success('删除成功!',U('Admin/index'));
}else{
$this->error( $model->getError() );
}
}
}
}

View file

@ -0,0 +1,110 @@
<?php
namespace Home\Controller;
use Think\Controller;
class AttributeController extends PublicController {
public function index(){
$model=D('Attribute');
$res=$model->category();
$this->assign('res',$res);
$this->display('list');
}
//添加
public function add(){
if(I('post.')){
$data=I('post./a'); //接受数据
//检测是否是ajax
ajax();
$model=D('Attribute');
//检验是否是有效数据
if($model->create($data,1)){
//添加
if( $model->add($data) ){
$this->success('添加成功!',U('Attribute/index')) && exit();
}
}else{
$this->error( $model->getError() );
}
}
//分类列表
$category=D('Category');
$res=$category->field('id,name')->select();
$this->assign('category',$res);
$this->display();
}
//编辑 修改
public function edit(){
//获取信息
if( I('get.id/d') ){
$res=D('Attribute')->category();
$this->assign('info',$res['res'][0] );
}
if(I('post.id/d')){
$data=I('post./a'); //接受数据
//检测是否是ajax
ajax();
$model=D('Attribute');
//检验是否是有效数据
if($model->create($data,2)){
//添加
if( $model->save($data) ){
$this->success('修改成功!',U('Attribute/index')) && exit();
}
}else{
$this->error( $model->getError() );
}
//乐观锁 返回json数据
$this->ajaxReturn( array('status'=>1,'info'=>'修改成功!') );
}
//分类列表
$category=D('Category');
$res=$category->field('id,name')->select();
$this->assign('category',$res);
$this->display();
}
//删除用户
public function delete(){
//如果get id存在
if( I('get.id/d') ){
$id=I('get.id/d');
$model=D('Attribute');
//判断是否删除成功
if( $model->delete($id) ){
$this->success('删除成功!',U('Attribute/index'));
}else{
$this->error( $model->getError() );
}
}
}
}

View file

@ -0,0 +1,99 @@
<?php
namespace Home\Controller;
use Think\Controller;
class BrandController extends PublicController {
public function index(){
$model=D('Brand');
$res=$model->brand();
$this->assign('res',$res);
$this->display('list');
}
//添加
public function add(){
if(I('post.')){
$data=I('post./a'); //接受数据
//检测是否是ajax
ajax();
$model=D('Brand');
//检验是否是有效数据
if($model->create($data,1)){
//添加
if( $model->add($data) ){
$this->success('添加成功!',U('Brand/index')) && exit();
}
}else{
$this->error( $model->getError() );
}
}
$this->display();
}
//编辑 修改
public function edit(){
//获取信息
if( I('get.id/d') ){
$res=D('Brand')->brand();
$this->assign('info',$res['res'][0] );
}
if(I('post.id/d')){
$data=I('post./a'); //接受数据
//检测是否是ajax
ajax();
$model=D('Brand');
//检验是否是有效数据
if($model->create($data,2)){
//添加
if( $model->save($data) ){
$this->success('修改成功!',U('Brand/index')) && exit();
}
}else{
$this->error( $model->getError() );
}
//乐观锁 返回json数据
$this->ajaxReturn( array('status'=>1,'info'=>'修改成功!') );
}
$this->display();
}
//删除品牌
public function delete(){
//如果get id存在
if( I('get.id/d') ){
$id=I('get.id/d');
$model=D('Brand');
//判断是否删除成功
if( $model->delete($id) ){
$this->success('删除成功!',U('Brand/index'));
}else{
$this->error( $model->getError() );
}
}
}
}

View file

@ -0,0 +1,203 @@
<?php
namespace Home\Controller;
use Think\Controller;
class BuyController extends PublicController {
public function index(){
//获取所有的品牌
$brand=M('brand')->field('id,name')->select();
//获取所有的类型
$category=M('category')->field('id,name')->select();
//获取所有的属性
// $attribute=M('attribute')->field('id,name')->select();
// dump($attribute);
//商品列表信息
$res=D('Goods')->goods();
// dump($res);
//分配
$this->assign(array(
'res' => $res,
'empty' => '<tr><td colspan="10"><span class="empty">没有找到匹配的数据...</span></td></tr>',
'brand' => $brand,
'category' => $category,
// 'attribute'=> $attribute
)
);
$this->display('list');
}
//编辑 修改
public function add(){
//分类列表
$category=D('Category');
$res=$category->field('id,name')->select();
//品牌列表
$brand=D('Brand');
$brand=$brand->field('id,name')->select();
//获取所有的门店
$store=M('store')->field('id,name')->select();
$this->assign(array(
'category' => $res,
'brand' => $brand,
'store' => $store
));
if( I('post.') ){
$data=I('post./a') ;
// dump($data);
// die();
//检测是否是ajax
ajax();
$model=D('Goods');
//检验是否是有效数据
if($model->create($data,1)){
//添加
if( $model->add($data) ){
$this->success('添加成功!',U('Goods/index')) && exit();
}
}else{
$this->error( $model->getError() );
exit();
}
//乐观锁 返回json数据
$this->ajaxReturn( array('status'=>1,'info'=>'修改成功!') );
}
$this->display();
}
//编辑 修改
public function edit(){
//分类列表
$category=D('Category');
$res=$category->field('id,name')->select();
//品牌列表
$brand=D('Brand');
$brand=$brand->field('id,name')->select();
//获取所有的门店
$store=M('store')->field('id,name')->select();
$this->assign(array(
'category' => $res,
'brand' => $brand,
'store' => $store
));
//获取信息
if( I('get.id/d') ){
$id=I('get.id/d');
$res=D('Goods')->goods();
// dump($res['res'][0]);
$this->assign('info',$res['res'][0] );
}
//数据提交
if( I('post.') ){
$data=I('post.');
// dump($data);die;
//判断是否是ajax提交
ajax();
$model=D('Goods');
//检验是否是有效数据
if($model->create($data,2)){
//修改
if( $model->save($data) ){
// $this->success('修改成功!',U('Goods/index')) && exit();
}
}else{
$this->error( $model->getError() );
exit;
}
//乐观锁 返回json数据
$this->ajaxReturn( array('status'=>1,'info'=>'修改成功!') );
}
$this->display();
}
//删除
public function delete(){
//判断是否传入了id
if( I('get.id/d') ){
$id=I('get.id/d');
//判断是否是ajax提交
ajax();
$model=D('Goods');
if( $model->delete($id) ){
$this->success('删除成功!',U('Goods/index'));
}else{
$this->error( $model->getError() );
}
}
}
//ajax获取属性列表
public function get_attr(){
$model=D('Goods');
$res=$model->get_attr( I('get.id/d') );
$this->ajaxReturn($res);
}
//信息
public function detail(){
//分类列表
$category=D('Category');
$res=$category->field('id,name')->select();
//品牌列表
$brand=D('Brand');
$brand=$brand->field('id,name')->select();
//获取所有的门店
$store=M('store')->field('id,name')->select();
$this->assign(array(
'category' => $res,
'brand' => $brand,
'store' => $store
));
//获取信息
if( I('get.id/d') ){
$id=I('get.id/d');
$res=D('Goods')->goods();
// dump($res);
$this->assign('info',$res['res'][0] );
}
$this->display();
}
}

View file

@ -0,0 +1,125 @@
<?php
namespace Home\Controller;
use Think\Controller;
class CategoryController extends PublicController {
public function index(){
$model=D('Category');
$res=$model->category();
$this->assign('res',$res);
$this->display('list');
}
//添加
public function add(){
if(I('post.')){
$data=I('post./a'); //接受数据
//检测是否是ajax
ajax();
$model=D('Category');
//检验是否是有效数据
if($model->create($data,1)){
//添加
if( $model->add($data) ){
$this->success('添加成功!',U('Category/index')) && exit();
}
}else{
$this->error( $model->getError() );
}
}
$this->display();
}
//编辑 修改
public function edit(){
//获取信息
if( I('get.id/d') ){
$res=D('Category')->category();
$this->assign('info',$res['res'][0] );
}
if(I('post.id/d')){
$data=I('post./a'); //接受数据
//检测是否是ajax
ajax();
$model=D('Category');
//检验是否是有效数据
if($model->create($data,2)){
//添加
if( $model->save($data) ){
$this->success('修改成功!',U('Category/index')) && exit();
}
}else{
$this->error( $model->getError() );
}
//乐观锁 返回json数据
$this->ajaxReturn( array('status'=>1,'info'=>'修改成功!') );
}
$this->display();
}
//修改用户状态
public function status(){
//如果get id存在
if( I('get.id/d') ){
$id=I('get.id/d');
$data['status']=I('get.status/d');
//判断是否是ajax提交
ajax();
//判断是否修改成功
if( M('Category')->where(array('id'=>$id))->save($data) ){
//返回json数据
$this->ajaxReturn( array('status'=>1,'info'=>'修改成功!') );
}else{
$this->ajaxReturn( array('status'=>0,'info'=>'修改失败!') );
}
}
}
//删除用户
public function delete(){
//如果get id存在
if( I('get.id/d') ){
$id=I('get.id/d');
$model=D('Category');
//判断是否删除成功
if( $model->delete($id) ){
$this->success('删除成功!',U('Category/index'));
}else{
$this->error( $model->getError() );
}
}
}
}

View file

@ -0,0 +1,237 @@
<?php
namespace Home\Controller;
use Think\Controller;
class GoodsController extends PublicController {
public function index(){
//获取所有的品牌
$brand=M('brand')->field('id,name')->select();
//获取所有的类型
$category=M('category')->field('id,name')->select();
//获取所有的属性
// $attribute=M('attribute')->field('id,name')->select();
// dump($attribute);
//获取所有的门店
$store=M('store')->field('id,name')->select();
// dump($store);
//商品列表信息
$res=D('Goods')->goods();
// dump($res);
//分配
$this->assign(array(
'res' => $res,
'empty' => '<tr><td colspan="9"><span class="empty">没有找到匹配的数据...</span></td></tr>',
'brand' => $brand,
'category' => $category,
// 'attribute'=> $attribute
)
);
$this->display('list');
}
//添加商品
public function add(){
//分类列表
$category=D('Category');
$res=$category->field('id,name')->select();
//品牌列表
$brand=D('Brand');
$brand=$brand->field('id,name')->select();
//获取所有的门店
$store=M('store')->field('id,name')->select();
$this->assign(array(
'category' => $res,
'brand' => $brand,
'store' => $store
));
if( I('post.') ){
$data=I('post./a') ;
// dump($data);
// die();
//检测是否是ajax
ajax();
$model=D('Goods');
//检验是否是有效数据
if($model->create($data,1)){
//添加
if( $model->add($data) ){
$this->success('添加成功!',U('Goods/index')) && exit();
}
}else{
$this->error( $model->getError() );
exit();
}
//乐观锁 返回json数据
$this->ajaxReturn( array('status'=>1,'info'=>'修改成功!') );
}
$this->display('add');
}
//编辑 修改
public function edit(){
//分类列表
$category=D('Category');
$res=$category->field('id,name')->select();
//品牌列表
$brand=D('Brand');
$brand=$brand->field('id,name')->select();
//获取所有的门店
$store=M('store')->field('id,name')->select();
$this->assign(array(
'category' => $res,
'brand' => $brand,
'store' => $store
));
//获取信息
if( I('get.id/d') ){
$id=I('get.id/d');
$res=D('Goods')->goods();
// dump($res['res'][0]);
$this->assign('info',$res['res'][0] );
}
//数据提交
if( I('post.') ){
$data=I('post.');
//判断是否是ajax提交
ajax();
$model=D('Goods');
//检验是否是有效数据
if($model->create($data,2)){
//修改
if( $model->save($data) ){
$this->success('修改成功!',U('Goods/index')) && exit();
}
}else{
$this->error( $model->getError() );
exit;
}
//乐观锁 返回json数据
$this->ajaxReturn( array('status'=>1,'info'=>'修改成功!') );
}
$this->display();
}
//删除
public function delete(){
//判断是否传入了id
if( I('get.id/d') ){
$id=I('get.id/d');
//判断是否是ajax提交
ajax();
$model=D('Goods');
if( $model->delete($id) ){
$this->success('删除成功!',U('Goods/index'));
}else{
$this->error( $model->getError() );
}
}
}
//ajax获取属性列表
public function get_attr(){
$model=D('Goods');
$res=$model->get_attr( I('get.id/d') );
$this->ajaxReturn($res);
}
//信息
public function detail(){
//分类列表
$category=D('Category');
$res=$category->field('id,name')->select();
//品牌列表
$brand=D('Brand');
$brand=$brand->field('id,name')->select();
//获取所有的门店
$store=M('store')->field('id,name')->select();
$this->assign(array(
'category' => $res,
'brand' => $brand,
'store' => $store
));
//获取信息
if( I('get.id/d') ){
$id=I('get.id/d');
$res=D('Goods')->goods();
$this->assign('info',$res['res'][0] );
}
$this->display();
}
//添加用户
public function buy_add(){
//分类列表
$category=D('Category');
$res=$category->field('id,name')->select();
$this->assign('category',$res);
//品牌列表
$brand=D('Brand');
$brand=$brand->field('id,name')->select();
$this->assign('brand',$brand);
if( I('post.') ){
$data=I('post./a') ;
//检测是否是ajax
ajax();
$model=D('Goods');
//检验是否是有效数据
if($model->create($data,1)){
//添加
if( $model->add($data) ){
$this->success('添加成功!',U('Goods/index')) && exit();
}
}else{
$this->error( $model->getError() );
}
}
$this->display();
}
}

View file

@ -0,0 +1,10 @@
<?php
namespace Home\Controller;
use Think\Controller;
class IndexController extends PublicController {
public function index(){
$this->display();
}
}

View file

@ -0,0 +1,85 @@
<?php
namespace Home\Controller;
use Think\Controller;
class LoginController extends Controller {
public function index(){
$this->display();
}
public function admin(){
$this->display();
}
//验证码
public function code(){
$config = array(
'fontSize' => 32, // 验证码字体大小
'length' => 4, // 验证码位数
'useNoise' => false, // 关闭验证码杂点
'useImgBg' => false, // 开启验证码背景图片功能 随机使用 ThinkPHP/Library/Think/Verify/bgs 目录下面的图片
'codeSet' => '0123456789', // 设置验证码字符为纯数字
'useCurve' => false //是否使用混淆曲线
);
$Verify = new \Think\Verify($config);
$Verify->entry();
}
//注销登陆
public function loginout(){
session('uid',null);
//判断是否是普通用户
if( session('user_type')=='admin' ){
$this->error('正在退出...',U('Login/index') );
session('user_type',null);
} else {
$this->error('正在退出...',U('Login/admin') );
session('user_type',null);
}
}
//登陆
public function login(){
$model=D('admin');
// 接收表单并且验证表单
if($model->validate($model->_login_validate)->create()){
if($model->login()){
$this->success('登录成功!', U('Index/index'));
exit;
}else{
$this->error($model->getError());
}
}else{
$this->error($model->getError());
}
}
//登陆
public function user_login(){
$model=D('user');
// 接收表单并且验证表单
if($model->validate($model->_login_validate)->create()){
if($model->login()){
$this->success('登录成功!', U('Index/index'));
exit;
}else{
$this->error($model->getError());
}
}else{
$this->error($model->getError());
}
}
}

View file

@ -0,0 +1,101 @@
<?php
namespace Home\Controller;
use Think\Controller;
class PositionController extends PublicController {
public function index(){
$model=D('Position');
$res=$model->position();
$this->assign('res',$res);
$this->display('list');
}
//添加
public function add(){
if(I('post.')){
$data=I('post./a'); //接受数据
//检测是否是ajax
// ajax();
$model=D('Position');
//检验是否是有效数据
if($model->create($data,1)){
//添加
if( $model->add($data) ){
$this->success('添加成功!',U('Position/index')) && exit();
}
}else{
$this->error( $model->getError() );
}
}
$this->display();
}
//编辑 修改
public function edit(){
//获取信息
if( I('get.id/d') ){
$res=D('Position')->position();
$this->assign('info',$res['res'][0] );
}
if(I('post.id/d')){
$data=I('post./a'); //接受数据
//检测是否是ajax
ajax();
$model=D('Position');
//检验是否是有效数据
if($model->create($data,2)){
//添加
if( $model->save($data) ){
$this->success('修改成功!',U('Store/index')) && exit();
}
}else{
$this->error( $model->getError() );
}
//乐观锁 返回json数据
$this->ajaxReturn( array('status'=>1,'info'=>'修改成功!') );
}
$this->display();
}
//删除用户
public function delete(){
//如果get id存在
if( I('get.id/d') ){
$id=I('get.id/d');
$model=D('Position');
//判断是否删除成功
if( $model->delete($id) ){
$this->success('删除成功!',U('Store/index'));
}else{
$this->error( $model->getError() );
}
}
}
}

View file

@ -0,0 +1,101 @@
<?php
namespace Home\Controller;
use Think\Controller;
class PrivilegeController extends PublicController {
public function index(){
$res=D('Privilege')->privilege();
//分配
$this->assign(array(
'res' => $res,
'empty' => '<tr><td colspan="8"><span class="empty">没有找到匹配的数据...</span></td></tr>'
)
);
$this->display('list');
}
//添加用户
public function add(){
if(I('post.')){
$data=I('post./a'); //接受数据
$model=D('Privilege');
//判断是否是ajax提交
ajax();
//检验是否是有效数据
if($model->create($data)){
//添加
if( $model->add($data) ){
$this->success('添加成功!',U('Privilege/index')) && exit();
}
}else{
$this->error( $model->getError() );
}
}
$this->display('add');
}
//编辑 修改
public function edit(){
//信息
$res=D('Privilege')->privilege();
$this->assign( 'res',$res['res'][0] );
if( I('post.id/d') ){
$id=I('post.id/d');
$data=I('post.');
//检测是否是ajax
ajax();
$model=D('Privilege');
//检验是否是有效数据
if($model->create($data,2)){
//添加
if( $model->save($data) ){
$this->success('修改成功!',U('Privilege/index')) && exit();
}
}else{
$this->error( $model->getError() );
}
//乐观锁 返回json数据
$this->ajaxReturn( array('status'=>1,'info'=>'修改成功!') );
}
$this->display();
}
//删除
public function delete(){
//检测是否 是ajax
ajax();
if( I('get.id/d') ){
$id=I('get.id/d');
$model=D('Privilege');
//判断是否删除成功
if( $model->delete($id) ){
$this->success('删除成功',U('Privilege/index'));
}else{
$this->error( $model->getError() );
}
}
}
}

View file

@ -0,0 +1,53 @@
<?php
namespace Home\Controller;
use Think\Controller;
class PublicController extends Controller {
//初始化
function _initialize(){
//判断session id是否存在
if( session('uid') ){
//判断是否是普通用户
if( session('user_type')=='admin' ){
//查询用户信息
$info= M('admin')
->field('a.*,a.id as user_id,GROUP_CONCAT(DISTINCT c.role_name) as role_name,e.*,e.id as privliege_id,GROUP_CONCAT(DISTINCT e.controller) as authority')
->alias('a')
->group('b.admin_id')
->join('LEFT JOIN __ADMIN_ROLE__ as b on a.id=b.admin_id')
->join('LEFT JOIN __ROLE__ as c on c.id=b.role_id')
->join('LEFT JOIN __ROLE_PRIVILEGE__ as d on c.id=d.role_id')
->join('LEFT JOIN __PRIVILEGE__ as e on d.privliege_id=e.id')
->where(array('a.id'=>session('uid')))
->find();
}else{
$info= M('user')
->field('a.*,a.id as user_id,b.*,c.id as position_id,c.name as position_name,d.name as store_name,d.id as store_id')
->alias('a')
->join('LEFT JOIN __USERINFO__ as b on a.id=b.id')
->join('LEFT JOIN __POSITION__ as c on b.position=c.id')
->join('LEFT JOIN __STORE__ as d on b.store_id=d.id')
->where(array('a.id'=>session('uid')) )
->find();
}
$this->assign('infos',$info); //分配用户信息
//dump($info);
//dump($info['authority']);
}else{
$this->redirect('Login/index'); //跳转到登陆页面
}
}
public function nopower(){
$this->display();
}
}

View file

@ -0,0 +1,109 @@
<?php
namespace Home\Controller;
use Think\Controller;
class RoleController extends PublicController {
public function index(){
$res=D('Role')->role();
// dump($res);
//分配
$this->assign(array(
'res' => $res,
'empty' => '<tr><td colspan="8"><span class="empty">没有找到匹配的数据...</span></td></tr>'
)
);
$this->display('list');
}
//添加用户
public function add(){
//获取权限列表
$privilege=D('Privilege');
$res=$privilege->field('id,name')->select();
$this->assign('res',$res);
if( I('post.') ){
$data=I('post./a') ;
//检测是否是ajax
ajax();
$model=D('Role');
//检验是否是有效数据
if($model->create($data,1)){
//添加
if( $model->add($data) ){
$this->success('添加成功!',U('Role/index')) && exit();
}
}else{
$this->error( $model->getError() );
}
}
$this->display('add');
}
//编辑 修改
public function edit(){
//获取权限列表
$privilege=D('Privilege');
$res=$privilege->field('id,name')->select();
$this->assign('res',$res);
//获取信息
if( I('get.id/d') ){
$id=I('get.id/d');
$res=D('Role')->role();
$this->assign('info',$res['res'][0] );
}
//数据提交
if( I('post.') ){
$data=I('post.');
//判断是否是ajax提交
ajax();
$model=D('Role');
//检验是否是有效数据
if($model->create($data,2)){
//修改
if( $model->save($data) ){
$this->success('修改成功!',U('Role/index')) && exit();
}
}else{
$this->error( $model->getError() );
exit;
}
//乐观锁 返回json数据
$this->ajaxReturn( array('status'=>1,'info'=>'修改成功!') );
}
$this->display();
}
public function delete(){
//判断是否传入了id
if( I('get.id/d') ){
$id=I('get.id/d');
//判断是否是ajax提交
ajax();
$model=D('Role');
if( $model->delete($id) ){
$this->success('删除成功!',U('Role/index'));
}else{
$this->error( $model->getError() );
}
}
}
}

View file

@ -0,0 +1,109 @@
<?php
namespace Home\Controller;
use Think\Controller;
class SellController extends PublicController {
public function index(){
//获取所有的品牌
$brand=M('brand')->field('id,name')->select();
//获取所有的类型
$category=M('category')->field('id,name')->select();
//获取所有的属性
// $attribute=M('attribute')->field('id,name')->select();
// dump($attribute);
//商品列表信息
$res=D('Goods')->goods();
// dump($res);
//分配
$this->assign(array(
'res' => $res,
'empty' => '<tr><td colspan="8"><span class="empty">没有找到匹配的数据...</span></td></tr>',
'brand' => $brand,
'category' => $category,
// 'attribute'=> $attribute
)
);
$this->display();
}
//编辑 修改
public function item(){
//分类列表
$category=D('Category');
$res=$category->field('id,name')->select();
$this->assign('category',$res);
//品牌列表
$brand=D('Brand');
$brand=$brand->field('id,name')->select();
$this->assign('brand',$brand);
//获取信息
if( I('get.id/d') ){
$id=I('get.id/d');
$res=D('Goods')->goods();
// dump($res['res'][0]);
$this->assign('info',$res['res'][0] );
}
//数据提交
if( I('post.') ){
$data=I('post.');
//判断是否是ajax提交
// ajax();
$model=D('Goods');
//检验是否是有效数据
if($model->reduce_stock()){
//修改
$this->success('下单成功!',U('Sell/index')) && exit();
}else{
$this->error( '下单失败!'.$model->getError() );
exit;
}
//乐观锁 返回json数据
$this->ajaxReturn( array('status'=>1,'info'=>'修改成功!') );
}
$this->display();
}
//ajax获取属性列表
public function get_attr(){
$model=D('Goods');
$res=$model->get_attr( I('get.id/d') );
$this->ajaxReturn($res);
}
//销售记录
public function record(){
//获取销售信息
$res=D('record')->search();
//获取所有的类型
$category=M('category')->field('id,name')->select();
//dump($res);
$this->assign(array(
'res' => $res,
'empty' => '<tr><td colspan="9"><span class="empty">没有找到匹配的数据...</span></td></tr>',
'category'=>$category
));
$this->display();
}
}

View file

@ -0,0 +1,135 @@
<?php
namespace Home\Controller;
use Think\Controller;
class StoreController extends PublicController {
public function index(){
$model=D('Store');
$res=$model->store();
$this->assign('res',$res);
$this->display('list');
}
//添加
public function add(){
if(I('post.')){
$data=I('post./a'); //接受数据
//检测是否是ajax
ajax();
$model=D('Store');
//检验是否是有效数据
if($model->create($data,1)){
//添加
if( $model->add($data) ){
$this->success('添加成功!',U('Store/index')) && exit();
}
}else{
$this->error( $model->getError() );
}
}
$this->display();
}
//编辑 修改
public function edit(){
//获取信息
if( I('get.id/d') ){
$res=D('Store')->store();
$this->assign('info',$res['res'][0] );
}
if(I('post.id/d')){
$data=I('post./a'); //接受数据
//检测是否是ajax
ajax();
$model=D('Store');
//检验是否是有效数据
if($model->create($data,2)){
//添加
if( $model->save($data) ){
$this->success('修改成功!',U('Store/index')) && exit();
}
}else{
$this->error( $model->getError() );
}
//乐观锁 返回json数据
$this->ajaxReturn( array('status'=>1,'info'=>'修改成功!') );
}
$this->display();
}
//修改用户状态
public function status(){
//如果get id存在
if( I('get.id/d') ){
$id=I('get.id/d');
$data['status']=I('get.status/d');
//判断是否是ajax提交
ajax();
//判断是否修改成功
if( M('store')->where(array('id'=>$id))->save($data) ){
//返回json数据
$this->ajaxReturn( array('status'=>1,'info'=>'修改成功!') );
}else{
$this->ajaxReturn( array('status'=>0,'info'=>'修改失败!') );
}
}
}
//删除用户
public function delete(){
//如果get id存在
if( I('get.id/d') ){
$id=I('get.id/d');
$model=D('Store');
//判断是否删除成功
if( $model->delete($id) ){
$this->success('删除成功!',U('Store/index'));
}else{
$this->error( $model->getError() );
}
}
}
//信息展示
public function detail(){
//获取信息
if( I('get.id/d') ){
$res=D('Store')->store();
$this->assign('info',$res['res'][0] );
}
$this->display();
}
}

View file

@ -0,0 +1,142 @@
<?php
namespace Home\Controller;
use Think\Controller;
class UserController extends PublicController {
//用户信息
public function info(){
//判断用户
if( session('user_type')=='admin' ){
if( I('post./a') ){
$data=I('post./a');
if( M('admin')->where( array('id'=>$data['id']) )->save($data) ){
//乐观锁 返回json数据
$this->ajaxReturn( array('status'=>1,'info'=>'修改成功!') );
exit();
}else{
//乐观锁 返回json数据
$this->ajaxReturn( array('status'=>0,'info'=>'修改失败!') );
exit();
}
}
}else{
if( I('post./a') ){
$data=I('post./a');
if( M('user')->where( array('id'=>$data['id']) )->save($data) ){
//乐观锁 返回json数据
$this->ajaxReturn( array('status'=>1,'info'=>'修改成功!') );
exit();
}else{
//乐观锁 返回json数据
$this->ajaxReturn( array('status'=>0,'info'=>'修改失败!') );
exit();
}
}
}
$this->display();
}
//密码修改
public function pwd(){
//判断是否是普通用户
if( session('user_type')=='admin' ){
//获取密码
$info= M('admin')
->field('a.*,GROUP_CONCAT(c.role_name) as role_name')
->alias('a')
->group('b.admin_id')
->join('LEFT JOIN __ADMIN_ROLE__ as b on a.id=b.admin_id')
->join('LEFT JOIN __ROLE__ as c on c.id=b.role_id')
->where(array('a.id'=>session('uid')))
->find();
//接受数据
$data=I('post./a');
if( I('post./a') ){
//判断旧密码是否正确
if( $info['password'] == md5( $data['old_password'] ) ){
//判断两次密码是否一样
if($data['password'] == $data['confirm_password']){
$data['password'] =md5($data['password'] );
if( M('admin')->where( array('id'=>$data['id']) )->save($data) ){
//乐观锁 返回json数据
$this->ajaxReturn( array('status'=>1,'info'=>'修改成功!') );
session('uid',null);
session('user_type',null);
exit();
}else{
//乐观锁 返回json数据
$this->ajaxReturn( array('status'=>0,'info'=>'修改失败!') );
exit();
}
}
}else{
$this->ajaxReturn( array('status'=>0,'info'=>'旧密码错误!') );
}
}
}else{
//获取密码
$info=M('user')->field('id,username,password')->where( array('id'=>session('uid')) )->find();
//接受数据
$data=I('post./a');
if( I('post./a') ){
//判断旧密码是否正确
if( $info['password'] == md5( $data['old_password'] ) ){
//判断两次密码是否一样
if($data['password'] == $data['confirm_password']){
$data['password'] =md5($data['password'] );
if( M('user')->where( array('id'=>$data['id']) )->save($data) ){
//乐观锁 返回json数据
$this->ajaxReturn( array('status'=>1,'info'=>'修改成功!') );
session('uid',null);
session('user_type',null);
exit();
}else{
//乐观锁 返回json数据
$this->ajaxReturn( array('status'=>0,'info'=>'修改失败!') );
exit();
}
}
}else{
$this->ajaxReturn( array('status'=>0,'info'=>'旧密码错误!') );
}
}
}
$this->display();
}
}

View file

@ -0,0 +1 @@

View file

@ -0,0 +1,178 @@
<?php
namespace Home\Model;
use Think\Model;
class AdminModel extends Model {
// 新增数据的时候允许写入name和email字段
protected $insertFields = 'nickname,username,password,tel,email,role_id,code';
// 编辑数据的时候只允许写入email字段
protected $updateFields = 'nickname,username,password,tel,email,role_id';
//验证规则
// 第四个参数: 0存在字段就验证默认 1必须验证 2值不为空的时候验证
// 第六个参数: 规则什么时候生效: 1添加时生效 2修改时生效 3所有情况都生效
protected $_validate = array(
array('nickname','require','姓名不能为空',1),
array('username','require','账号不能为空',1),
array('password','require','密码不能为空',1),
array('tel','require','手机号码不能为空',1),
array('email','require','邮箱不能为空',1),
array('username', '1,20', '账号的值最长不能超过 20 个字符!', 1, 'length', 3),
array('email','email','邮箱格式不正确',2),
);
/*************登陆验证*******************************************************/
// 为登录的表单定义一个验证规则
public $_login_validate = array(
array('username', 'require', '用户名不能为空!', 1),
array('password', 'require', '密码不能为空!', 1),
array('code', 'require', '验证码不能为空!', 1),
array('code', 'check_verify', '验证码不正确!', 1, 'callback'),
);
// 验证验证码是否正确
function check_verify($code, $id = ''){
$verify = new \Think\Verify();
return $verify->check($code, $id);
}
//登陆
public function login(){
// 从模型中获取用户名和密码
$username = $this->username;
$password = $this->password;
// 先查询这个用户名是否存在
$user = $this->where(array('username' => array('eq', $username),))->find();
if($user){
if($user['password'] == md5($password)){
//保存到session
session('uid',$user['id']);
session('user_type','admin');
return TRUE;
}else{
$this->error = '密码不正确!';
return FALSE;
}
}else {
$this->error = '用户名不存在!';
return FALSE;
}
}
//插入之前*******************************************************************
protected function _before_insert(&$data, $option){
$data['create_time']= time();
$data['password']= md5( I('post.password') );
$data['status']=0;
}
//插入之后
protected function _after_insert($data, $option){
$res=I('post.'); //接受的数据
$res['admin_id']=$data['id']; //管理员id
$role_id=I('post.role_id/a'); //角色id
if( is_array($role_id ) ){
//遍历插入
foreach ($role_id as $v) {
$res['role_id']=$v;
M('admin_role')->add($res);
}
}
}
//更新之前
protected function _before_update(&$data, $option){
//判断是否修改密码
if( $data['password'] ){
$data['password'] = md5($data['password']);
} else {
unset($data['password']);
}
}
//更新之后
protected function _after_update($data, $option){
$id=$data['id'];
$res['admin_id']=$id; //用户id
$role_id=I('post.role_id/a');
if( is_array($role_id ) ){
//先删除
M('admin_role')->where($res)->delete();
//遍历插入
foreach ($role_id as $v) {
$res['role_id']=$v;
M('admin_role')->add($res);
}
}
}
//实现 搜索 分页
public function search(){
$where=array();
//接受搜索的关键字
I('get.nickname') && $where['nickname']=array( 'like','%'.I('get.nickname').'%' ) ;
I('get.username') && $where['username']=array( 'eq',I('get.username')) ;
I('get.role_name') && $where['role_name']=array( 'like','%'.I('get.role_name').'%' ) ;
I('get.tel') && $where['tel']=array( 'like','%'.I('get.tel').'%' ) ;
I('get.email') && $where['email']=array( 'like','%'.I('get.email').'%' ) ;
//编辑信息页面获取到的id
I('get.id') && $where=array('a.id' =>array('eq',I('get.id/d') ) );
$count = $this->alias('a')->where($where)->count();// 查询满足要求的总记录数
$Page = new \Think\Page($count,7);// 实例化分页类 传入总记录数和每页显示的记录数
//设置
$Page->setConfig('first','首页');
$Page->setConfig('last','尾页');
$Page->setConfig('next','下一页');
$Page->setConfig('prev','上一页');
$page = $Page->show();// 分页显示输出
$limit=$Page->firstRow.','.$Page->listRows;
//查询之后的结果
$res=$this->field('a.*,GROUP_CONCAT(c.role_name) as role_name')
->alias('a')
->group('b.admin_id')
->join('LEFT JOIN __ADMIN_ROLE__ as b on a.id=b.admin_id')
->join('LEFT JOIN __ROLE__ as c on c.id=b.role_id')
// ->join('LEFT JOIN __ROLE_PRIVILEGE__ as d on c.id=d.role_id')
// ->join('LEFT JOIN __PRIVILEGE__ as e on d.privliege_id=e.id')
->where($where)
->order('a.id asc')
->limit($limit)
->select();
return array(
'page' => $page,
'res' => $res
);
}
// 删除之后
protected function _after_delete($option){
$id=$option['id'];
$map['admin_id']=$id;
$id && M('admin_role')->where($map)->delete();
}
}

View file

@ -0,0 +1,90 @@
<?php
namespace Home\Model;
use Think\Model;
class AttributeModel extends Model {
// 新增数据的时候允许写入name和email字段
protected $insertFields = 'name,type,content,note';
// 编辑数据的时候只允许写入email字段
protected $updateFields = 'name,type,content,note,id';
//验证规则
// 第四个参数: 0存在字段就验证默认 1必须验证 2值不为空的时候验证
// 第六个参数: 规则什么时候生效: 1添加时生效 2修改时生效 3所有情况都生效
protected $_validate = array(
array('name','require','类别名称不能为空',1),
// array('name', '', '类别名称已经存在!', 1, 'unique', 1),
array('name', '1,20', '类别名称最长不能超过 20 个字符!', 1, 'length', 3),
);
//插入之前
protected function _before_insert(&$data, $option){
$data['time']= time();
}
//插入之后
protected function _after_insert($data, $option){
$res['attribute_id']=$data['id'];
//插入数据库
$res['category_id']=I('post.category_id');
$res && M('category_attribute')->add($res);
}
//更新之前
protected function _before_update(&$data, $option){
}
//实现 分页
public function category(){
$where=array();
//编辑信息页面获取到的id
I('get.id') && $where=array('a.id' =>array('eq',I('get.id/d') ) );
$count = $this->alias('a')->where($where)->count();// 查询满足要求的总记录数
$Page = new \Think\Page($count,10);// 实例化分页类 传入总记录数和每页显示的记录数
//设置
$Page->setConfig('first','首页');
$Page->setConfig('last','尾页');
$Page->setConfig('next','下一页');
$Page->setConfig('prev','上一页');
$page = $Page->show();// 分页显示输出
$limit=$Page->firstRow.','.$Page->listRows;
$res=$this->field('a.*,c.name as parent_name')
->alias('a')
->join('left join __CATEGORY_ATTRIBUTE__ as b on a.id=b.attribute_id')
->join('left join __CATEGORY__ as c on b.category_id=c.id')
->where($where)
->order('a.id asc')
->limit($limit)
->select();
return array(
'page' => $page,
'res' => $res
);
}
// 删除之前
protected function _before_delete($option){
}
// 删除之后
protected function _after_delete($option){
}
}

View file

@ -0,0 +1,69 @@
<?php
namespace Home\Model;
use Think\Model;
class BrandModel extends Model {
// 新增数据的时候允许写入name和email字段
protected $insertFields = 'name';
// 编辑数据的时候只允许写入email字段
protected $updateFields = 'name,id';
//验证规则
// 第四个参数: 0存在字段就验证默认 1必须验证 2值不为空的时候验证
// 第六个参数: 规则什么时候生效: 1添加时生效 2修改时生效 3所有情况都生效
protected $_validate = array(
array('name','require','品牌名称不能为空',1),
array('name', '', '品牌名称已经存在!', 1, 'unique', 1),
array('name', '1,20', '品牌名称最长不能超过 20 个字符!', 1, 'length', 3),
);
//插入之前
protected function _before_insert(&$data, $option){
$data['time']= time();
}
//实现 分页
public function brand(){
$where=array();
//编辑信息页面获取到的id
I('get.id') && $where=array('id' =>array('eq',I('get.id/d') ) );
$count = $this->where($where)->count();// 查询满足要求的总记录数
$Page = new \Think\Page($count,10);// 实例化分页类 传入总记录数和每页显示的记录数
//设置
$Page->setConfig('first','首页');
$Page->setConfig('last','尾页');
$Page->setConfig('next','下一页');
$Page->setConfig('prev','上一页');
$page = $Page->show();// 分页显示输出
$limit=$Page->firstRow.','.$Page->listRows;
$res=$this->where($where)
->order('id asc')
->limit($limit)
->select();
return array(
'page' => $page,
'res' => $res
);
}
// 删除之前
protected function _before_delete($option){
}
// 删除之后
protected function _after_delete($option){
}
}

View file

@ -0,0 +1,81 @@
<?php
namespace Home\Model;
use Think\Model;
class CategoryModel extends Model {
// 新增数据的时候允许写入name和email字段
protected $insertFields = 'name';
// 编辑数据的时候只允许写入email字段
protected $updateFields = 'name,id';
//验证规则
// 第四个参数: 0存在字段就验证默认 1必须验证 2值不为空的时候验证
// 第六个参数: 规则什么时候生效: 1添加时生效 2修改时生效 3所有情况都生效
protected $_validate = array(
array('name','require','类别名称不能为空',1),
array('name', '', '类别名称已经存在!', 1, 'unique', 1),
array('name', '1,20', '类别名称最长不能超过 20 个字符!', 1, 'length', 3),
);
//插入之前
protected function _before_insert(&$data, $option){
$data['time']= time();
}
//插入之后
protected function _after_insert($data, $option){
}
//更新之前
protected function _before_update(&$data, $option){
}
//实现 分页
public function category(){
$where=array();
//编辑信息页面获取到的id
I('get.id') && $where=array('id' =>array('eq',I('get.id/d') ) );
$count = $this->where($where)->count();// 查询满足要求的总记录数
$Page = new \Think\Page($count,10);// 实例化分页类 传入总记录数和每页显示的记录数
//设置
$Page->setConfig('first','首页');
$Page->setConfig('last','尾页');
$Page->setConfig('next','下一页');
$Page->setConfig('prev','上一页');
$page = $Page->show();// 分页显示输出
$limit=$Page->firstRow.','.$Page->listRows;
$res=$this->where($where)
->order('id asc')
->limit($limit)
->select();
return array(
'page' => $page,
'res' => $res
);
}
// 删除之前
protected function _before_delete($option){
}
// 删除之后
protected function _after_delete($option){
}
}

View file

@ -0,0 +1,437 @@
<?php
namespace Home\Model;
use Think\Model;
class GoodsModel extends Model {
// 新增数据的时候允许写入name和email字段
protected $insertFields = 'name,brand_id,category_id,price,stock,attrbute_id,spec_item,sn,store_id';
// 编辑数据的时候只允许写入email字段
protected $updateFields = 'name,brand_id,category_id,price,stock,id,attrbute_id,spec_item,sn,store_id';
//验证规则
// 第四个参数: 0存在字段就验证默认 1必须验证 2值不为空的时候验证
// 第六个参数: 规则什么时候生效: 1添加时生效 2修改时生效 3所有情况都生效
protected $_validate = array(
array('name','require','名称不能为空',1),
array('name', '', '名称已经存在!', 1, 'unique', 1),
array('sn', '', '编号已经存在!', 1, 'unique', 1),
array('name', '1,20', '名称最长不能超过 20 个字符!', 1, 'length', 3),
array('brand_id','require','品牌不能为空',1),
);
//插入之前
protected function _before_insert(&$data, $option){
$data['time']= time();
$price=I('post.price');
$data['price']= $price[0];
//购入总数量
$count=I('post.count');
$data['sum']= array_sum($count);
//购入总价
$data['total']= $data['price']*$data['sum'];
}
//获取属性的***************************************************************
public function info($data,$price,$count){
static $res=array();
foreach ( $data as $k=>$v) {
$res[]=$v.','.$price[$k].','.$count[$k];
}
return $res;
}
//插入之后*******************************************************************
protected function _after_insert($data, $option){
$res['goods_id']=$data['id'];
// 判断category_id是否是数组
if(is_array( I('post.category_id/a') ) ){
// 遍历赋值,并添加
foreach ( I('post.category_id/a') as $v) {
$res['category_id']=$v;
$res && M('goods_category')->add($res);
}
}
//属性id
$res1['goods_id']=$data['id'];
$attrbute_id=I('post.attrbute_id/a'); //获取参数
//判断是否 为数组 添加到val
if(is_array($attrbute_id) ){
//遍历插入数据库
foreach ($attrbute_id as $key => $value) {
$res1['attrbute_id']=$key;
$res1['val']=$value;
$res1 && M('goods_attrbute')->add($res1);
}
}
//判断属性列表是否是数组
if(is_array( I('post.spec_item/a') )){
//获取参数
$price=I('post.price/a'); //价格
$count=I('post.count/a'); //库存
//获取商品属性
$arr= self::info(I('post.spec_item/a'),$price,$count);
//把字符串转为数组
foreach ($arr as $key => $value) {
$attr[]=explode(",",$value);
}
//遍历赋值,并添加
foreach ($attr as $value) {
$res['attrbute_id']='';
$res['attrbute_value']=$value[0].':'.$value[1];
$res['price']=$value[2];
$res['count']=$value[3];
$res && M('goods_attrbute')->add($res);
}
}
}
//更新之前*******************************************************************
protected function _before_update(&$data, $option){
$price=I('post.price');
$data['price']= $price[0];
//购入总数量
$count=I('post.count');
$data['sum']= array_sum($count);
// dump($data);
//购入总价
$data['total']= $data['price']*$data['sum'];
//id
//$res['goods_id']=$option['where']['id'];
}
//更新之后*******************************************************************
protected function _after_update($data, $option){
$res=I('post.');
//id
$res['goods_id']=$data['id'];
// 判断category_id是否是数组
if(is_array( I('post.category_id/a') ) ){
//先删除
M('goods_category')->where( array('goods_id'=>$data['id']) )->delete();
// 遍历赋值,并添加
foreach ( I('post.category_id/a') as $v) {
$res['category_id']=$v;
$res && M('goods_category')->add($res);
}
}
//判断属性列表是否是数组***********************************************
if(is_array( I('post.spec_item/a') )){
//获取参数
$price=I('post.price/a'); //价格
$count=I('post.count/a'); //库存
//先删除
M('goods_attrbute')->where(array( 'goods_id'=>$data['id']) )->delete();
//获取商品属性
$arr= self::info(I('post.spec_item/a'),$price,$count);
//把字符串转为数组
foreach ($arr as $key => $value) {
$attr[]=explode(",",$value);
}
//遍历赋值,并添加
foreach ($attr as $value) {
$res['attrbute_id']='';
$res['attrbute_value']=$value[0].':'.$value[1];
$res['price']=$value[2];
$res['count']=$value[3];
$res && M('goods_attrbute')->add($res);
}
}
//属性id
$res1['goods_id']=$data['id'];
$attrbute_id=I('post.attrbute_id/a'); //获取参数
//判断是否 为数组 添加到val
if(is_array($attrbute_id) ){
//遍历插入数据库
foreach ($attrbute_id as $key => $value) {
$res1['attrbute_id']=$key;
$res1['val']=$value;
$res1 && M('goods_attrbute')->add($res1);
}
}
}
//实现 搜索 分页
public function goods(){
$where=array();
//接受搜索的关键字
I('get.sn') && $where['sn']=array( 'eq',I('get.sn')) ; //货号
I('get.name') && $where['a.name']=array( 'like','%'.I('get.name').'%' ) ;
I('get.username') && $where['username']=array( 'eq',I('get.username')) ;
I('get.brand') && $where['brand_id']=array( 'eq',I('get.brand')) ; //品牌
I('get.category') && $where['category_id']=array( 'eq',I('get.category')) ; //类型
//编辑信息页面获取到的id
I('get.id') && $where=array('a.id' =>array('eq',I('get.id/d') ) );
// dump($where);
//排序
$order='a.id asc'; //默认从低到高
I('get.order') && $order= str_replace('+',' ',I('get.order/s') ); //查找替换+
// dump($order);
/*************************区间查询开始 start *****************************/
/*价格区间***************************************************************/
if( I('get.start_price') ){
$where['a.price']=array('egt',I('get.start_price'));
}
//起始价格 开始-结束
if( I('get.start_price') && I('get.end_price') ){
$where['a.price']=array("between",array( I('get.start_price'), I('get.end_price') ));
}
//小于结束 价格
if( I('get.end_price') ){
$where['a.price']=array('elt',I('get.end_price'));
}
/*库存区间***************************************************************/
if( I('get.start_stock') && !I('get.end_stock') ){
$where['count']=array('egt',I('get.start_stock'));
}
//起始库存 开始-结束
if( I('get.start_stock') && I('get.end_stock') ){
$where['count']=array("between",array( I('get.start_stock'), I('get.end_stock') ));
}
//小于结束 库存
if( !I('get.start_stock') && I('get.end_stock') ){
$where['count']=array('elt',I('get.end_stock'));
}
/*时间区间***************************************************************/
//strtotime()
if( I('get.start_time') && !I('get.end_time') ){
$where['a.time']=array('egt',strtotime( I('get.start_time') ) );
}
//起始时间 开始-结束
if( I('get.start_time') && I('get.end_time') ){
$where['a.time']=array("between",array( strtotime( I('get.start_time') ), strtotime( I('get.end_time') ) ));
}
//小于结束 时间
if( !I('get.start_time') && I('get.end_time') ){
$where['a.time']=array('elt',strtotime( I('get.end_time') ) );
}
/************************区间查询结束 end *********************************/
$count = $this->alias('a')
// ->join('LEFT JOIN __BRAND__ as b on a.brand_id=b.id')
// ->join('LEFT JOIN __GOODS_CATEGORY__ as c on a.id=c.goods_id')
// ->join('LEFT JOIN __CATEGORY__ as d on c.category_id=d.id')
// ->join('LEFT JOIN __GOODS_ATTRBUTE__ as e on a.id=e.goods_id')
// ->join('LEFT JOIN __ATTRIBUTE__ as f on e.attrbute_id=f.id')
// ->group('e.goods_id')
->where($where)
->count();// 查询满足要求的总记录数
$Page = new \Think\Page($count,7);// 实例化分页类 传入总记录数和每页显示的记录数
//设置
$Page->setConfig('first','首页');
$Page->setConfig('last','尾页');
$Page->setConfig('next','下一页');
$Page->setConfig('prev','上一页');
$page = $Page->show();// 分页显示输出
$limit=$Page->firstRow.','.$Page->listRows;
$res=$this
->field('a.*,b.name as brand_name,d.id as category_id,d.name as category_name,GROUP_CONCAT(e.attrbute_id) as attrbute_id,GROUP_CONCAT(e.attrbute_value) as attrbute_value,GROUP_CONCAT(e.val) as val,GROUP_CONCAT(e.count) as count,GROUP_CONCAT(e.price) as prices,GROUP_CONCAT(f.name) as attrbute_name')
->alias('a')
->join('LEFT JOIN __BRAND__ as b on a.brand_id=b.id')
->join('LEFT JOIN __GOODS_CATEGORY__ as c on a.id=c.goods_id')
->join('LEFT JOIN __CATEGORY__ as d on c.category_id=d.id')
->join('LEFT JOIN __GOODS_ATTRBUTE__ as e on a.id=e.goods_id')
->join('LEFT JOIN __ATTRIBUTE__ as f on e.attrbute_id=f.id')
->group('e.goods_id')
->where($where)
->order($order)
->limit($limit)
->select();
//缓存
// $res=S('res') ? S('res') : S('res',$res);
// $page=S('$page') ? S('$page') : S('$page',$page);
return array(
'page' => $page,
'res' => $res
);
}
//通过id获取属性值
public function get_attr($id=1){
//[category_id]= array('eq',$id);
return M('category_attribute')
->field('b.id,b.name,b.type,b.content')
->alias('a')
->join('LEFT JOIN __ATTRIBUTE__ as b on a.attribute_id=b.id')
->where( array('a.category_id'=>$id,'b.status'=>0) )
->group('a.attribute_id')
->select();
}
//通过id获取属性值
public function get_attrs($id=1){
$map['a.category_id']= array('eq',$id);
$map['b.status']= array('eq',0);
$map['c.count']= array('gt',0);
return M('category_attribute')
->field('b.id,b.name,b.type,b.content')
->alias('a')
->join('LEFT JOIN __ATTRIBUTE__ as b on a.attribute_id=b.id')
->where( $map )
->group('a.attribute_id')
->select();
}
//减库存
public function reduce_stock(){
//!empty($arr) || exit();
//判断属性列表是否是数组***********************************************
if(is_array( I('post.spec_item/a') )){
//接受参数
$price=I('post.price/a'); //价格
$count=I('post.count/a'); //库存
//获取商品属性
$arr= self::info(I('post.spec_item/a'),$price,$count);
//把字符串转为数组
foreach ($arr as $key => $value) {
$attr[]=explode(",",$value);
}
//用户下单的数量
$num=I('post.num/a');
//遍历赋值,并修改库存
foreach ($attr as $key=>$value) {
$res['attrbute_id']='';
$res['attrbute_value']=$value[0].':'.$value[1];
//$res['price']=$value[2];
//判断下单数量是否大于库存
if( $num[$key]>$value[3] ){
$this->error='&nbsp;商品&nbsp;<lable style="color:blue;font-weight:bold;">'.$res['attrbute_value'].'</lable>&nbsp;商品库存不足';
return false;
exit();
}else{
if($value[3]!==0 ){
$data['value']=$value[0].','.$value[1];
$res['count']=$value[3]-$num[$key]; //减去库存
//修改数据库的库存信息
$res && $result=M('goods_attrbute')->where( array('attrbute_value'=>$res['attrbute_value']) )->save($res);
}
//取出用户信息
if( session('user_type')=='admin' ){
$userinfo= M('admin')->where(array('id'=>session('uid')))->find();
}else{
$userinfo= M('user')->alias('a')
->join('LEFT JOIN __USERINFO__ as b on a.id=b.id')
->where(array('a.id'=>session('uid')))->find();
}
//取出商品信息
$goods_info=$this->where(array('goods_id'=>$result))->find();
//判断库存是否修改成功
$data['goods_id']=$result;
$data['no']=$userinfo['no'];
$data['name']=$userinfo['username'];
$data['create_time']=time();
$data['sn']=$goods_info['sn'];
$data['goods_name']=$goods_info['name'];
$data['price']=$goods_info['price'];
$result && M('record')->add($data);
}
}
return $result;
}
}
// 删除之后执行
protected function _after_delete($option){
$id['goods_id']=$option['id'];
//删除类型
$id && M('goods_category')->where($id)->delete();
//删除属性
$id && M('goods_attrbute')->where($id)->delete($id);
}
}

View file

@ -0,0 +1,82 @@
<?php
namespace Home\Model;
use Think\Model;
class PositionModel extends Model {
// 新增数据的时候允许写入name和email字段
protected $insertFields = 'name';
// 编辑数据的时候只允许写入email字段
protected $updateFields = 'name,id';
//验证规则
// 第四个参数: 0存在字段就验证默认 1必须验证 2值不为空的时候验证
// 第六个参数: 规则什么时候生效: 1添加时生效 2修改时生效 3所有情况都生效
protected $_validate = array(
array('name','require','职位不能为空',1),
array('name', '', '职位已经存在!', 1, 'unique', 1),
array('name', '1,20', '职位最长不能超过 20 个字符!', 1, 'length', 3),
);
//插入之前
protected function _before_insert(&$data, $option){
$data['time']= time();
}
//插入之后
protected function _after_insert($data, $option){
}
//更新之前
protected function _before_update(&$data, $option){
$res=I('post.');
//id
$map['id']=$option['where']['id'];
}
//实现 搜索 分页
public function position(){
$where=array();
//编辑信息页面获取到的id
I('get.id') && $where=array('a.id' =>array('eq',I('get.id/d') ) );
$count = $this->alias('a')->where($where)->count();// 查询满足要求的总记录数
$Page = new \Think\Page($count,10);// 实例化分页类 传入总记录数和每页显示的记录数
//设置
$Page->setConfig('first','首页');
$Page->setConfig('last','尾页');
$Page->setConfig('next','下一页');
$Page->setConfig('prev','上一页');
$page = $Page->show();// 分页显示输出
$limit=$Page->firstRow.','.$Page->listRows;
$res=$this
->alias('a')
->where($where)
->limit($limit)
->select();
//缓存
// $res=S('res') ? S('res') : S('res',$res);
// $page=S('$page') ? S('$page') : S('$page',$page);
return array(
'page' => $page,
'res' => $res
);
}
// 删除之后
protected function _after_delete($option){
$id=$option['id'];
}
}

View file

@ -0,0 +1,99 @@
<?php
namespace Home\Model;
use Think\Model;
class PrivilegeModel extends Model {
// 新增数据的时候允许写入name和email字段
protected $insertFields = 'name,parent_id,controller,module,action';
// 编辑数据的时候只允许写入email字段
protected $updateFields = 'name,parent_id,controller,module,action,id';
//验证规则
// 第四个参数: 0存在字段就验证默认 1必须验证 2值不为空的时候验证
// 第六个参数: 规则什么时候生效: 1添加时生效 2修改时生效 3所有情况都生效
protected $_validate = array(
array('name','require','角色名称不能为空',1),
array('controller','require','控制器不能为空',1),
array('module','require','模块不能为空',1,'',1),
array('name', '', '角色名称已经存在!', 1, 'unique', 1),
array('name', '1,20', '用户名的值最长不能超过 20 个字符!', 1, 'length', 3),
);
//插入之前
protected function _before_insert(&$data, $option){
//判断方法是否选择了多个
if( is_array( $data['action'] ) ) {
$data['action']=implode(',', $data['action']);
}
}
//插入之后
protected function _after_insert($data, $option){
}
//更新之前
protected function _before_update(&$data, $option){
//判断方法是否选择了多个,把数组拆分为字符串
if( is_array( $data['action'] ) ) {
$data['action']=implode(',', $data['action']);
}
}
//实现 分页
public function privilege(){
$where=array();
//编辑信息页面获取到的id
I('get.id') && $where=array('id' =>array('eq',I('get.id/d') ) );
$count = $this->where($where)->count();// 查询满足要求的总记录数
$Page = new \Think\Page($count,10);// 实例化分页类 传入总记录数和每页显示的记录数
//设置
$Page->setConfig('first','首页');
$Page->setConfig('last','尾页');
$Page->setConfig('next','下一页');
$Page->setConfig('prev','上一页');
$page = $Page->show();// 分页显示输出
$limit=$Page->firstRow.','.$Page->listRows;
$res=$this->where($where)
->order('id asc')
->limit($limit)
->select();
return array(
'page' => $page,
'res' => $res
);
}
// 删除之前
protected function _before_delete($option)
{
if($option['where']['id'] == 1){
$this->error = '超级管理员无法删除!';
return FALSE;
}
}
// 删除之后
protected function _after_delete($option){
$id=$option['id'];
}
}

View file

@ -0,0 +1,89 @@
<?php
namespace Home\Model;
use Think\Model;
class RecordModel extends Model {
// 新增数据的时候允许写入name和email字段
protected $insertFields = 'nickname,username,password,tel,email,role_id';
// 编辑数据的时候只允许写入email字段
protected $updateFields = 'nickname,username,password,tel,email,role_id';
//验证规则
// 第四个参数: 0存在字段就验证默认 1必须验证 2值不为空的时候验证
// 第六个参数: 规则什么时候生效: 1添加时生效 2修改时生效 3所有情况都生效
protected $_validate = array(
array('nickname','require','姓名不能为空',1),
);
//插入之前
protected function _before_insert(&$data, $option){
}
//插入之后
protected function _after_insert($data, $option){
}
//更新之前
protected function _before_update(&$data, $option){
}
//更新之后
protected function _after_update($data, $option){
}
//实现 搜索 分页
public function search(){
$where=array();
//接受搜索的关键字
I('get.name') && $where['a.name']=array( 'like','%'.I('get.name').'%' ) ;
I('get.category') && $where['c.id']=array( 'eq',I('get.category')) ;
I('get.create_time') && $where['create_time']=array( 'gt', strtotime( I('get.create_time') ) ) ;
// 查询满足要求的总记录数
$count = $this->alias('a')
->join('LEFT JOIN __GOODS_CATEGORY__ as b on a.goods_id=b.goods_id')
->join('LEFT JOIN __CATEGORY__ as c on b.category_id=c.id')
->where($where)
->count();
$Page = new \Think\Page($count,10);// 实例化分页类 传入总记录数和每页显示的记录数
//设置
$Page->setConfig('first','首页');
$Page->setConfig('last','尾页');
$Page->setConfig('next','下一页');
$Page->setConfig('prev','上一页');
$page = $Page->show();// 分页显示输出
$limit=$Page->firstRow.','.$Page->listRows;
//查询之后的结果
$res=$this->alias('a')
->field('a.*,c.name as category_name')
->join('LEFT JOIN __GOODS_CATEGORY__ as b on a.goods_id=b.goods_id')
->join('LEFT JOIN __CATEGORY__ as c on b.category_id=c.id')
->where($where)
->order('create_time asc')
->limit($limit)
->select();
return array(
'page' => $page,
'res' => $res
);
}
// 删除之后
protected function _after_delete($option){
}
}

View file

@ -0,0 +1,117 @@
<?php
namespace Home\Model;
use Think\Model;
class RoleModel extends Model {
// 新增数据的时候允许写入name和email字段
protected $insertFields = 'role_name,id,privliege_id,role_id';
// 编辑数据的时候只允许写入email字段
protected $updateFields = 'role_name,id,privliege_id,role_id,name,parent_id,controller,module,action';
//验证规则
// 第四个参数: 0存在字段就验证默认 1必须验证 2值不为空的时候验证
// 第六个参数: 规则什么时候生效: 1添加时生效 2修改时生效 3所有情况都生效
protected $_validate = array(
array('role_name','require','角色名称不能为空',1),
array('role_name', '', '角色名称已经存在!', 1, 'unique', 1),
array('role_name', '1,20', '角色名称的值最长不能超过 20 个字符!', 1, 'length', 3),
);
//插入之前
protected function _before_insert(&$data, $option){
}
//插入之后
protected function _after_insert($data, $option){
$res['role_id']=$data['id'];
if( is_array( I('post.privliege_id/a') ) ) {
//遍历插入
foreach (I('post.privliege_id/a') as $v) {
$res['privliege_id']=$v;
M('role_privilege')->add($res);
}
}
}
//更新之后
protected function _after_update($data, $option){
$id=$data['id']; //用户id
$res['role_id']=$id;
//执行更新
if( is_array( I('post.privliege_id/a') ) ) {
//先删除原来的内容
M('role_privilege')->where($res)->delete();
//遍历插入
foreach (I('post.privliege_id/a') as $v) {
$res['privliege_id']=$v;
M('role_privilege')->add($res);
}
}
}
//实现 分页
public function role(){
$where=array();
//编辑信息页面获取到的id
I('get.id') && $where=array('a.id' =>array('eq',I('get.id/d') ) );
$count = $this->alias('a')->where($where)->count();// 查询满足要求的总记录数
$Page = new \Think\Page($count,7);// 实例化分页类 传入总记录数和每页显示的记录数
//设置
$Page->setConfig('first','首页');
$Page->setConfig('last','尾页');
$Page->setConfig('next','下一页');
$Page->setConfig('prev','上一页');
$page = $Page->show();// 分页显示输出
$limit=$Page->firstRow.','.$Page->listRows;
$res=$this
->field('a.*,GROUP_CONCAT(c.name) as names')
->alias('a')
->join('LEFT JOIN __ROLE_PRIVILEGE__ as b on a.id=b.role_id')
->join('LEFT JOIN __PRIVILEGE__ as c on b.privliege_id=c.id')
->where($where)
->group('a.id')
->order('a.id asc')
->limit($limit)
->select();
return array(
'page' => $page,
'res' => $res
);
}
// 删除之前
protected function _before_delete($option){
if($option['where']['id'] == 1){
$this->error = '超级管理员无法删除!';
return FALSE;
}
}
// 删除之后
protected function _after_delete($option){
$id=$option['id'];
$map['role_id']=$id;
$id && M('role_privilege')->where($map)->delete();
}
}

View file

@ -0,0 +1,89 @@
<?php
namespace Home\Model;
use Think\Model;
class StoreModel extends Model {
// 新增数据的时候允许写入name和email字段
protected $insertFields = 'name,leader,tel,create_time,address,desc';
// 编辑数据的时候只允许写入email字段
protected $updateFields = 'name,leader,tel,create_time,address,desc';
//验证规则
// 第四个参数: 0存在字段就验证默认 1必须验证 2值不为空的时候验证
// 第六个参数: 规则什么时候生效: 1添加时生效 2修改时生效 3所有情况都生效
protected $_validate = array(
array('name','require','门店名称不能为空',1),
array('leader','require','管理者不能为空',1),
array('tel','require','电话不能为空',1),
array('create_time','require','时间不能为空',1),
array('address','require','地址不能为空',1),
array('name', '', '门店名称已经存在!', 1, 'unique', 1),
array('name', '1,20', '门店名称最长不能超过 20 个字符!', 1, 'length', 3),
array('desc', '1,100', '描述最长不能超过 100 个字符!', 1, 'length', 3),
);
//插入之前
protected function _before_insert(&$data, $option){
}
//插入之后
protected function _after_insert($data, $option){
$id=$data['id'];
}
//更新之后
protected function _after_update($data, $option){
$id=$data['id']; //用户id
}
//实现 分页
public function store(){
$where=array();
//编辑信息页面获取到的id
I('get.id') && $where=array('a.id' =>array('eq',I('get.id/d') ) );
$count = $this->alias('a')->where($where)->count();// 查询满足要求的总记录数
$Page = new \Think\Page($count,7);// 实例化分页类 传入总记录数和每页显示的记录数
//设置
$Page->setConfig('first','首页');
$Page->setConfig('last','尾页');
$Page->setConfig('next','下一页');
$Page->setConfig('prev','上一页');
$page = $Page->show();// 分页显示输出
$limit=$Page->firstRow.','.$Page->listRows;
$res=$this
->alias('a')
->where($where)
->order('a.id asc')
->limit($limit)
->select();
return array(
'page' => $page,
'res' => $res
);
}
// 删除之前
protected function _before_delete($option){
$id=$option['where']['id'];
}
// 删除之后
protected function _after_delete($option){
$id=$option['id'];
}
}

View file

@ -0,0 +1,169 @@
<?php
namespace Home\Model;
use Think\Model;
class UserModel extends Model {
// 新增数据的时候允许写入name和email字段
protected $insertFields = 'nickname,no,username,password,confirm_password,tel,position,sex,address,post,qq,store_id,code';
// 编辑数据的时候只允许写入email字段
protected $updateFields = 'nickname,no,username,password,confirm_password,tel,position,sex,address,post,qq,store_id';
//验证规则
// 第四个参数: 0存在字段就验证默认 1必须验证 2值不为空的时候验证
// 第六个参数: 规则什么时候生效: 1添加时生效 2修改时生效 3所有情况都生效
protected $_validate = array(
array('nickname','require','昵称不能为空',1),
array('username','require','用户名不能为空',1),
array('password','require','密码不能为空',1,'',1),
array('confirm_password', 'password', '两次密码输入不一致!', 2, 'confirm', 3),
array('username', '', '用户名已经存在!', 1, 'unique', 1),
array('username', '1,20', '用户名的值最长不能超过 20 个字符!', 1, 'length', 3),
array('email','email','邮箱格式不正确',2),
);
//插入之前
protected function _before_insert(&$data, $option){
$data['create_time']= time();
$data['password']= md5( I('post.password') );
$data['status']=0;
}
//插入之后
protected function _after_insert($data, $option){
$res=I('post.');
$res['id']=$data['id'];
$res && M('userinfo')->add($res);
}
//更新之前
protected function _before_update(&$data, $option){
$res=I('post.');
//判断是否修改密码
if( $data['password'] ){
$data['password'] = md5($data['password']);
} else {
unset($data['password']);
}
//id
$map['id']=$option['where']['id'];
$res && M('userinfo')->where($map)->save($res);
}
//实现 搜索 分页
public function search(){
$where=array();
//接受搜索的关键字
I('get.no') && $where['no']=array( 'eq',I('get.no')) ;
I('get.nickname') && $where['nickname']=array( 'like','%'.I('get.nickname').'%' ) ;
I('get.username') && $where['username']=array( 'eq',I('get.username')) ;
I('get.status') && $where['a.status']=array( 'eq',I('get.status')) ;
I('get.position_name') && $where['c.name']=array( 'eq',I('get.position_name')) ;
I('get.store_name') && $where['d.name']=array( 'eq',I('get.store_name')) ;
//编辑信息页面获取到的id
I('get.id') && $where=array('a.id' =>array('eq',I('get.id/d') ) );
//排序
$order="a.id asc"; //默认从低到高
I('get.order') && $order=I('get.order');
// $count = $this->alias('a')->where($where)->count();// 查询满足要求的总记录数
// 查询满足要求的总记录数
$count=$this->field('a.*,b.*,c.id as position_id,c.name as position_name,d.name as store_name,d.id as store_id')
->alias('a')
->join('LEFT JOIN __USERINFO__ as b on a.id=b.id')
->join('LEFT JOIN __POSITION__ as c on b.position=c.id')
->join('LEFT JOIN __STORE__ as d on b.store_id=d.id')
->where($where)
->limit($limit)
->count();
$Page = new \Think\Page($count,7);// 实例化分页类 传入总记录数和每页显示的记录数
//设置
$Page->setConfig('first','首页');
$Page->setConfig('last','尾页');
$Page->setConfig('next','下一页');
$Page->setConfig('prev','上一页');
$page = $Page->show();// 分页显示输出
$limit=$Page->firstRow.','.$Page->listRows;
$res=$this
->field('a.*,b.*,c.id as position_id,c.name as position_name,d.name as store_name,d.id as store_id')
->alias('a')
->join('LEFT JOIN __USERINFO__ as b on a.id=b.id')
->join('LEFT JOIN __POSITION__ as c on b.position=c.id')
->join('LEFT JOIN __STORE__ as d on b.store_id=d.id')
->where($where)
->order($order)
->limit($limit)
->select();
//缓存
// $res=S('res') ? S('res') : S('res',$res);
// $page=S('$page') ? S('$page') : S('$page',$page);
return array(
'page' => $page,
'res' => $res
);
}
// 删除之后
protected function _after_delete($option){
$id=$option['id'];
$id && M('userinfo')->delete($id);
}
/***************验证登陆*****************************************************/
// 为登录的表单定义一个验证规则
public $_login_validate = array(
array('username', 'require', '用户名不能为空!', 1),
array('password', 'require', '密码不能为空!', 1),
array('code', 'require', '验证码不能为空!', 1),
array('code', 'check_verify', '验证码不正确!', 1, 'callback'),
);
// 验证验证码是否正确
function check_verify($code, $id = ''){
$verify = new \Think\Verify();
return $verify->check($code, $id);
}
//登陆
public function login(){
// 从模型中获取用户名和密码
$username = $this->username;
$password = $this->password;
// 先查询这个用户名是否存在
$user = $this->where(array('username' => array('eq', $username),))->find();
if($user){
if($user['password'] == md5($password)){
//保存到session
session('uid',$user['id']);
session('user_type','user');
return TRUE;
}else{
$this->error = '密码不正确!';
return FALSE;
}
}else {
$this->error = '用户名不存在!';
return FALSE;
}
}
}

View file

@ -0,0 +1 @@

View file

@ -0,0 +1,178 @@
<layout name="Public/layout"/>
{:jumps($infos['authority'],CONTROLLER_NAME)}
<script language="javascript" type="text/javascript">
//显示选填的信息项
function showOptionalInfo(imgObj) {
var div = document.getElementById("optionalInfo");
if (div.className == "hide") {
div.className = "show";
imgObj.src = "__PUBLIC__/images/hide.png";
}
else {
div.className = "hide";
imgObj.src = "__PUBLIC__/images/show.png";
}
}
</script>
<!--主要区域开始-->
<div id="main">
<form action="__SELF__" method="post" class="main_form" id="formTest">
<!--必填项-->
<div class="text_info clearfix"><span>姓名:</span></div>
<div class="input_info">
<input type="text" value="" maxlength="20" name="nickname"/>
<span class="required">*</span>
<div class="validate_msg_long">20长度以内的汉字、字母和数字的组合</div>
</div>
<div class="text_info clearfix"><span>职员编号:</span></div>
<div class="input_info">
<input type="text" value="" maxlength="25" name="no"/>
<span class="required">*</span>
<div class="validate_msg_long">正确的职员编号格式</div>
</div>
<div class="text_info clearfix"><span>所属门店:</span></div>
<div class="input_info">
<select name="store_id">
<volist name="store" id="vo">
<option value="{$vo.id}">{$vo.name}</option>
</volist>
</select>
<input type="button" value="增加" class="btn_add" onclick="location.href='{:U('Store/add')}';" />
</div>
<div class="text_info clearfix"><span>登录账号:</span></div>
<div class="input_info">
<input type="text" value="" maxlength="30" name="username"/>
<span class="required">*</span>
<div class="validate_msg_long">16长度以内的字母、数字和下划线的组合</div>
</div>
<div class="text_info clearfix"><span>密码:</span></div>
<div class="input_info">
<input type="password" maxlength="30" name="password"/>
<span class="required">*</span>
<div class="validate_msg_long">16长度以内的字母、数字和下划线的组合</div>
</div>
<div class="text_info clearfix"><span>重复密码:</span></div>
<div class="input_info">
<input type="password" maxlength="30" name="confirm_password"/>
<span class="required">*</span>
<div class="validate_msg_long">两次密码必须相同</div>
</div>
<!--可选项-->
<div class="text_info clearfix"><span>可选项:</span></div>
<div class="input_info">
<img src="__PUBLIC__/images/show.png" alt="展开" onclick="showOptionalInfo(this);" />
</div>
<div id="optionalInfo" class="hide">
<div class="text_info clearfix"><span>Email</span></div>
<div class="input_info">
<input type="text" class="width350" name="email"/>
<div class="validate_msg_tiny">50长度以内合法的 Email 格式</div>
</div>
<div class="text_info clearfix"><span>职业:</span></div>
<div class="input_info">
<select name="position">
<volist name="position" id="vo">
<option value="{$vo.id}">{$vo.name}</option>
</volist>
</select>
<input type="button" value="增加" class="btn_add" onclick="location.href='{:U('Position/add')}';" />
</div>
<div class="text_info clearfix"><span>电话:</span></div>
<div class="input_info">
<input type="text" class="width200" maxlength="20" name="tel"/>
<span class="required">*</span>
<div class="validate_msg_medium">正确的电话号码格式:手机或固话</div>
</div>
<div class="text_info clearfix"><span>性别:</span></div>
<div class="input_info fee_type">
<input type="radio" name="sex" id="male" value="男" checked="checked"/>
<label for="male"></label>
<input type="radio" name="sex" id="female" value="女"/>
<label for="female"></label>
</div>
<div class="text_info clearfix"><span>通信地址:</span></div>
<div class="input_info">
<input type="text" class="width350" name="address"/>
<div class="validate_msg_tiny">50长度以内</div>
</div>
<div class="text_info clearfix"><span>邮编:</span></div>
<div class="input_info">
<input type="text" name="post"/>
<div class="validate_msg_long">6位数字</div>
</div>
<div class="text_info clearfix"><span>QQ</span></div>
<div class="input_info">
<input type="text" name="qq"/>
<div class="validate_msg_long">5到11位数字</div>
</div>
</div>
<!--操作按钮-->
<div class="button_info clearfix">
<input type="button" value="保存" class="btn_save" onclick="send(this)" />
<input type="reset" value="取消" class="btn_save" />
</div>
</form>
</div>
<!--主要区域结束-->
<script>
//ajax提交
function send(obj){
$.ajax({
url: '__SELF__',
type: 'post',
dataType:'json',
data: $("#formTest").serializeArray(),
success: function(data) {
// console.log(data);
//判断是否添加成功!
if(data.status==0){
layer.msg(data.info,{icon: 5});
}else{
layer.msg(data.info,{icon: 6});
//延迟跳转
setTimeout(function () {
location.href = "{:U('Account/index')}";
}, {:C('AJAX_TIME')});
}
}
});
}
</script>
<script type="text/javascript">
$(function(){
//点击之后的图标
$('.emp_off').addClass('emp_on').removeClass('emp_off');
});
</script>

View file

@ -0,0 +1,99 @@
<layout name="Public/layout"/>
{:jumps($infos['authority'],CONTROLLER_NAME)}
<!--主要区域开始-->
<div id="main">
<form action="__SELF__" method="post" class="main_form">
<!--必填项-->
<div class="text_info clearfix"><span>账号ID</span></div>
<div class="input_info">
<input type="text" value="{$info.id}" readonly class="readonly" name='id'/>
</div>
<div class="text_info clearfix"><span>姓名:</span></div>
<div class="input_info">
<input type="text" value="{$info.nickname}" name='nickname' readonly class="readonly"/>
<span class="required">*</span>
<div class="validate_msg_long ">20长度以内的汉字、字母和数字的组合</div>
</div>
<div class="text_info clearfix"><span>员工编号:</span></div>
<div class="input_info">
<input type="text" value="{$info.no}" readonly class="readonly" name='no' />
</div>
<div class="text_info clearfix"><span>登录账号:</span></div>
<div class="input_info">
<input type="text" value="{$info.username}" readonly class="readonly" name='username' />
</div>
<div class="text_info clearfix"><span>电话:</span></div>
<div class="input_info">
<input type="text" class="width200 readonly" value='{$info.tel}' name='tel'/>
<span class="required">*</span>
<div class="validate_msg_medium ">正确的电话号码格式:手机或固话</div>
</div>
<div class="text_info clearfix"><span>Email</span></div>
<div class="input_info">
<input type="text" class="width200 readonly" value='{$info.email}' name='email' />
<div class="validate_msg_medium">50长度以内合法的 Email 格式</div>
</div>
<div class="text_info clearfix"><span>职业:</span></div>
<div class="input_info">
<select name='position' disabled>
<option>干部</option>
</select>
</div>
<div class="text_info clearfix"><span>状态:</span></div>
<div class="input_info fee_type">
<input type="radio" disabled name="status" value='0' <php>if($info['status']==0){ echo 'checked'; }</php>/>
<label >正常</label>
<input type="radio" disabled name="status" value='1' <php>if($info['status']==1){ echo 'checked'; }</php>/>
<label >禁止</label>
</div>
<div class="text_info clearfix"><span>性别:</span></div>
<div class="input_info fee_type">
<input type="radio" disabled name="sex" id="male" value='男'<php>if($info['sex']=='男'){ echo 'checked'; }</php>/ >
<label for="male" ></label>
<input type="radio" disabled name="sex" id="female" value='女' <php>if($info['sex']=='女'){ echo 'checked'; }</php>/>
<label for="female" ></label>
</div>
<div class="text_info clearfix"><span>通信地址:</span></div>
<div class="input_info">
<input type="text" class="width350 readonly" name='address' value="{$info.address}"/>
<div class="validate_msg_tiny">50长度以内</div>
</div>
<div class="text_info clearfix"><span>邮编:</span></div>
<div class="input_info">
<input type="text" name="post" value='{$info.post}' class="readonly"/>
<div class="validate_msg_long">6位数字</div>
</div>
<div class="text_info clearfix"><span>QQ</span></div>
<div class="input_info">
<input type="text" name="qq" value="{$info.qq}" class="readonly"/>
<div class="validate_msg_long">5到11位数字</div>
</div>
</form>
</div>
<!--主要区域结束-->
<script type="text/javascript">
$(function(){
//点击之后的图标
$('.emp_off').addClass('emp_on').removeClass('emp_off');
});
</script>

View file

@ -0,0 +1,202 @@
<layout name="Public/layout"/>
{:jumps($infos['authority'],CONTROLLER_NAME)}
<script language="javascript" type="text/javascript">
//显示修改密码的信息项
function showPwd(chkObj) {
if (chkObj.checked)
document.getElementById("divPwds").style.display = "block";
else
document.getElementById("divPwds").style.display = "none";
}
</script>
<!--主要区域开始-->
<div id="main">
<form action="__SELF__" method="post" class="main_form">
<!--必填项-->
<div class="text_info clearfix"><span>账号ID</span></div>
<div class="input_info">
<input type="text" value="{$info.id}" readonly class="readonly" name='id'/>
</div>
<div class="text_info clearfix"><span>姓名:</span></div>
<div class="input_info">
<input type="text" value="{$info.nickname}" name='nickname'/>
<span class="required">*</span>
<div class="validate_msg_long ">20长度以内的汉字、字母和数字的组合</div>
</div>
<div class="text_info clearfix"><span>员工编号:</span></div>
<div class="input_info">
<input type="text" value="{$info.no}" readonly class="readonly" name='no'/>
</div>
<div class="text_info clearfix"><span>所属门店:</span></div>
<div class="input_info">
<select name="store_id">
<volist name="store" id="vo">
<option value="{$vo.id}"
<php>
if($info['store_id'] == $vo['id']){echo 'selected';}
</php>
> {$vo.name}</option>
</volist>
</select>
<input type="button" value="增加" class="btn_add" onclick="location.href='{:U('Store/add')}';" />
</div>
<div class="text_info clearfix"><span>登录账号:</span></div>
<div class="input_info">
<input type="text" value="{$info.username}" readonly class="readonly" name='username'/>
<div class="change_pwd">
<input id="chkModiPwd" type="checkbox" onclick="showPwd(this);" />
<label for="chkModiPwd">修改密码</label>
</div>
</div>
<!--修改密码部分-->
<div id="divPwds">
<div class="text_info clearfix"><span>新密码:</span></div>
<div class="input_info">
<input type="password" name='password'/>
<span class="required">*</span>
<div class="validate_msg_long">30长度以内的字母、数字和下划线的组合</div>
</div>
<div class="text_info clearfix"><span>重复新密码:</span></div>
<div class="input_info">
<input type="password" name='confirm_password'/>
<span class="required">*</span>
<div class="validate_msg_long">两次密码必须相同</div>
</div>
</div>
<div class="text_info clearfix"><span>电话:</span></div>
<div class="input_info">
<input type="text" class="width200" value='{$info.tel}' name='tel'/>
<span class="required">*</span>
<div class="validate_msg_medium ">正确的电话号码格式:手机或固话</div>
</div>
<div class="text_info clearfix"><span>Email</span></div>
<div class="input_info">
<input type="text" class="width200" value='{$info.email}' name='email'/>
<div class="validate_msg_medium">50长度以内合法的 Email 格式</div>
</div>
<div class="text_info clearfix"><span>职业:</span></div>
<div class="input_info">
<select name="position">
<volist name="position" id="vo">
<option value="{$vo.id}"
<php>
if($vo['id']==$info['position_id']){
echo 'selected';
}
</php>
>{$vo.name}</option>
</volist>
</select>
<input type="button" value="增加" class="btn_add" onclick="location.href='{:U('Position/add')}';" />
</div>
<div class="text_info clearfix"><span>状态:</span></div>
<div class="input_info fee_type">
<input type="radio" name="status" value='0' <php>if($info['status']==0){ echo 'checked'; }</php>/>
<label >正常</label>
<input type="radio" name="status" value='1' <php>if($info['status']==1){ echo 'checked'; }</php>/>
<label >禁止</label>
</div>
<div class="text_info clearfix"><span>性别:</span></div>
<div class="input_info fee_type">
<input type="radio" name="sex" id="male" value='男'<php>if($info['sex']=='男'){ echo 'checked'; }</php>/>
<label for="male" ></label>
<input type="radio" name="sex" id="female" value='女' <php>if($info['sex']=='女'){ echo 'checked'; }</php>/>
<label for="female" ></label>
</div>
<div class="text_info clearfix"><span>通信地址:</span></div>
<div class="input_info">
<input type="text" class="width350" name='address' value="{$info.address}"/>
<div class="validate_msg_tiny">50长度以内</div>
</div>
<div class="text_info clearfix"><span>邮编:</span></div>
<div class="input_info">
<input type="text" name="post" value='{$info.post}'/>
<div class="validate_msg_long">6位数字</div>
</div>
<div class="text_info clearfix"><span>QQ</span></div>
<div class="input_info">
<input type="text" name="qq" value="{$info.qq}"/>
<div class="validate_msg_long">5到11位数字</div>
</div>
<!--操作按钮-->
<div class="button_info clearfix">
<input type="button" value="保存" class="btn_save" onclick="send()" />
<input type="reset" value="取消" class="btn_save" />
</div>
</form>
</div>
<!--主要区域结束-->
<script>
//ajax提交
function send(obj){
layer.confirm('你确定真的要修改吗?', {icon: 3, title:'提示'}, function(index){
if(index){
$.ajax({
url: '__SELF__',
type: 'post',
dataType:'json',
data: $(".main_form").serializeArray(),
success: function(data) {
// console.log(data);
//判断是否修改成功!
if(data.status==0){
layer.msg(data.info,{icon: 5});
}else{
layer.msg(data.info,{icon: 6});
//延迟跳转
setTimeout(function () {
location.href = "{:U('Account/index')}";
}, {:C('AJAX_TIME')});
}
}
});
}
layer.close(index);
});
// layer.msg('Hello layer');
}
</script>
<script type="text/javascript">
$(function(){
//点击之后的图标
$('.emp_off').addClass('emp_on').removeClass('emp_off');
});
</script>

View file

@ -0,0 +1,264 @@
<layout name="Public/layout"/>
{:jumps($infos['authority'],CONTROLLER_NAME)}
<!--主要区域开始-->
<div id="main">
<form action="__SELF__" method="get" id="search">
<!--查询-->
<div class="search_add">
<div>员工编号:<input type="text" class="text_search width110" value="{:I('get.no')}" name='no'/></div>
<div>姓名:<input type="text" class="width70 text_search" value="{:I('get.nickname')}" name='nickname'/></div>
<div>账号:<input type="text" class="width70 text_search" value="{:I('get.username')}" name='username'/></div>
<div>
状态:
<select class="select_search" name='status' id='status'>
<option value="">全部</option>
<option value="0" <php>if( I('status')=='0' ){echo 'selected';}</php>>正常</option>
<option value="1" <php>if( I('status')=='1' ){echo 'selected';}</php>>禁止</option>
</select>
</div>
<div>
职位:
<select class="select_search" name='position_name' id='position'>
<option value="">全部</option>
<volist name='position' id='vo'>
<option value="{$vo.name}" <php>if( I('position_name')==$vo['name'] ){echo 'selected';}</php>
>{$vo.name}</option>
</volist>
</select>
</div>
<div>
<input type="button" value="搜索" class="btn_search" id="btn_search" onclick="search()"/>
</div>
<input type="button" value="增加" class="btn_add" onclick="location.href='__CONTROLLER__/add';" />
<!--第二行-->
<div style='margin:5px 0;'>
<div>
门店:
<select class="select_search" name='store_name' >
<option value="">全部</option>
<volist name='store' id='vo'>
<option value="{$vo.name}" <php>if( I('store_name')==$vo['name'] ){echo 'selected';}</php>
>{$vo.name}</option>
</volist>
</select>
</div>
<div>
排序:
<select class="select_search" name='order'>
<option value="a.id asc" <php> if( I('get.order')=='a.id asc' ){ echo 'selected';} </php> > ↑ 默认 </option>
<option value="a.id desc" <php> if( I('get.order')=='a.id desc' ){ echo 'selected';} </php> > ↓ 主键从高到低 </option>
<option value="create_time asc" <php> if( I('get.order')=='create_time asc' ){ echo 'selected';} </php> > ↑ 日期从低到高 </option>
<option value="create_time desc" <php> if( I('get.order')=='create_time desc' ){ echo 'selected';} </php> > ↓ 日期从高到低 </option>
</select>
</div>
</div>
<!--第二行结束-->
</div>
</form>
<!--数据区域:用表格展示数据 表格列表-->
<div id="data">
<table id="datalist">
<tr>
<th>账号ID</th>
<th>姓名</th>
<th>员工编号</th>
<th>账号</th>
<th>状态</th>
<th>职位</th>
<th>门店</th>
<th>创建日期</th>
<th class="width200">操作</th>
</tr>
<!--开始遍历数据-->
<volist name="res['res']" id="vo" empty="$empty">
<tr>
<td>{$vo.id}</td>
<td><a href="__CONTROLLER__/detail/id/{$vo.id}">{$vo.nickname}</a></td>
<td>{$vo.no}</td>
<td>{$vo.username}</td>
<td>
<php>
if($vo['status']==0){
echo '正常';
}else if($vo['status']==1){
echo '禁止';
}else if($vo['status']==2){
echo '删除';
}
</php>
</td>
<td>
<a href="__CONTROLLER__/index/position_name/{$vo.position_name}/"> {$vo.position_name} </a>
</td>
<td>{$vo.store_name}</td>
<td>{:date('Y-m-d',$vo['create_time'])}</td>
<td class="td_modi">
<if condition="$vo['status'] neq 2">
<if condition="$vo['status'] eq 0">
<input type="button" value="禁止" class="btn_pause" onclick="set_status( '__CONTROLLER__/status/id/{$vo.id}/status/1' );" />
<else />
<input type="button" value="正常" class="btn_start" onclick="set_status( '__CONTROLLER__/status/id/{$vo.id}/status/0' );" />
</if>
<input type="button" value="修改" class="btn_modify" onclick=" location.href='__CONTROLLER__/edit/id/{$vo.id}'; " />
<input type="button" value="删除" class="btn_delete" onclick=" deletes( '__CONTROLLER__/delete/id/{$vo.id}' ); " />
<else /> </if>
</td>
</tr>
</volist>
<!--遍历结束-->
</table>
<p>操作说明:<br />
1、创建则开通记载创建时间<br />
2、禁止后则无法登陆<br />
3、重新开通后则可以正常使用<br />
4、删除后标示为删除不能再开通、修改、删除<br />
</div>
<!--分页-->
<div id="pages">
{$res['page']}
</div>
</div>
<!--主要区域结束-->
<script type="text/javascript">
function search(){
layer.load(2); //加载
setTimeout(function(){
$('#search').submit();
},{:C('SEARCH_TIME')});
}
//状态
$(function(){
$('#status').change(function(){
$('#search').submit();
});
});
//职位
$(function(){
$('#position').change(function(){
$('#search').submit();
});
});
$(function(){
$('select').change(function(){
$('#search').submit();
});
});
//键盘事件
$(document).keydown(function(event){
if(event.keyCode == 13){
// alert(event.keyCode);
search();
}
});
//禁止 开通
function set_status(obj){
layer.confirm('你确定真的要修改用户状态吗?', {icon: 0, title:'提示'}, function(index){
if(index){
$.ajax({
type: "GET",
url: obj,
success: function(data){
//判断修改加成功!
if(data.status==0){
layer.msg(data.info,{icon: 5});
}else{
layer.msg(data.info,{icon: 6});
//延迟跳转
setTimeout(function () {
location.href = "{:U('Account/index')}";
}, {:C('AJAX_TIME')});
}
}
});
// layer.msg(obj);
}
layer.close(index);
});
}
//删除
function deletes(obj){
layer.confirm('你确定真的要删除此用户?', {icon: 3, title:'提示'}, function(index){
if(index){
$.get(obj, function(data){
//判断是否删除成功!
if(data.status==0){
layer.msg(data.info,{icon: 5});
}else{
layer.msg(data.info,{icon: 6});
//延迟跳转
setTimeout(function () {
location.href = "{:U('Account/index')}";
}, {:C('AJAX_TIME')});
}
});
}
layer.close(index);
});
}
</script>
<style type="text/css">
.empty{
font-weight:bold;
}
</style>
<script type="text/javascript">
$(function(){
//点击之后的图标
$('.emp_off').addClass('emp_on').removeClass('emp_off');
});
</script>

View file

@ -0,0 +1,106 @@
<layout name="Public/layout"/>
{:jumps($infos['authority'],CONTROLLER_NAME)}
<!--主要区域开始-->
<div id="main">
<form action="__SELF__" method="post" class="main_form">
<div class="text_info clearfix"><span>姓名:</span></div>
<div class="input_info">
<input type="text" name='nickname'/>
<span class="required">*</span>
<div class="validate_msg_long">20长度以内的汉字、字母、数字的组合</div>
</div>
<div class="text_info clearfix"><span>账号:</span></div>
<div class="input_info">
<input type="text" name='username' />
<span class="required">*</span>
<div class="validate_msg_long">30长度以内的字母、数字和下划线的组合</div>
</div>
<div class="text_info clearfix"><span>密码:</span></div>
<div class="input_info">
<input type="password" name='password' />
<span class="required">*</span>
<div class="validate_msg_long ">30长度以内的字母、数字和下划线的组合</div>
</div>
<div class="text_info clearfix"><span>重复密码:</span></div>
<div class="input_info">
<input type="password" name='confirm_password'/>
<span class="required">*</span>
<div class="validate_msg_long ">两次密码必须相同</div>
</div>
<div class="text_info clearfix"><span>电话:</span></div>
<div class="input_info">
<input type="text" class="width200" name='tel'/>
<span class="required">*</span>
<div class="validate_msg_medium ">正确的电话号码格式:手机或固话</div>
</div>
<div class="text_info clearfix"><span>Email</span></div>
<div class="input_info">
<input type="text" class="width200" name='email'/>
<span class="required">*</span>
<div class="validate_msg_medium ">50长度以内正确的 email 格式</div>
</div>
<div class="text_info clearfix"><span>角色:</span></div>
<div class="input_info_high">
<div class="input_info_scroll">
<ul>
<!--遍历权限-->
<volist name='role' id='vo'>
<li><input type="checkbox" value='{$vo.id}' name='role_id[]'/>{$vo.role_name}</li>
</volist>
</ul>
</div>
<span class="required">
<input type="button" value="增加" class="btn_add" onclick="location.href='{:U('Role/index')}';" />
</span>
<div class="validate_msg_tiny ">至少选择一个</div>
</div>
<div class="button_info clearfix">
<input type="button" value="保存" class="btn_save" onclick="send()" />
<input type="reset" value="取消" class="btn_save" />
</div>
</form>
</div>
<!--主要区域结束-->
<script type="text/javascript">
function send(){
// layer.confirm('你确定真的要添加吗?', {icon: 3, title:'提示'}, function(index){
// if(index){
$.ajax({
url: '__SELF__',
type: 'post',
dataType:'json',
data: $(".main_form").serializeArray(),
success: function(data) {
// console.log(data);
//判断是否添加成功!
if(data.status==0){
layer.msg(data.info,{icon: 5});
}else{
layer.msg(data.info,{icon: 6});
//延迟跳转
setTimeout(function () {
location.href = "{:U('Admin/index')}";
}, {:C('AJAX_TIME')});
}
}
});
// }
// layer.close(index);
// });
}
</script>
<script type="text/javascript">
$(function(){
//点击之后的图标
$('.admin_off').addClass('admin_on').removeClass('admin_off');
});
</script>

View file

@ -0,0 +1,103 @@
<layout name="Public/layout"/>
{:jumps($infos['authority'],CONTROLLER_NAME)}
<!--主要区域开始-->
<div id="main">
<form action="__SELF__" method="post" class="main_form">
<input type="hidden" name="id" value='{$info.id}'/>
<div class="text_info clearfix"><span>姓名:</span></div>
<div class="input_info">
<input type="text" value="{$info['nickname']}" name='nickname'/>
<span class="required">*</span>
<div class="validate_msg_long ">20长度以内的汉字、字母、数字的组合</div>
</div>
<div class="text_info clearfix"><span>账号:</span></div>
<div class="input_info"><input type="text" readonly="readonly" class="readonly" value="{$info.username}" name='username'/></div>
<div class="text_info clearfix"><span>密码:</span></div>
<div class="input_info">
<input type="password" class="width200" value="{$info.password}" name='password'/>
<span class="required">*</span>
<div class="validate_msg_medium ">20长度以内的汉字、字母、数字的组合</div>
</div>
<div class="text_info clearfix"><span>电话:</span></div>
<div class="input_info">
<input type="text" value="{$info.tel}" name='tel'/>
<span class="required">*</span>
<div class="validate_msg_long ">正确的电话号码格式:手机或固话</div>
</div>
<div class="text_info clearfix"><span>Email</span></div>
<div class="input_info">
<input type="text" class="width200" value="{$info.email}" name='email'/>
<span class="required">*</span>
<div class="validate_msg_medium ">50长度以内正确的 email 格式</div>
</div>
<div class="text_info clearfix"><span>角色:</span></div>
<div class="input_info_high">
<div class="input_info_scroll">
<ul>
<!--遍历权限-->
<volist name='role' id='vo'>
<li><input type="checkbox" value='{$vo.id}' name='role_id[]'
<php>
if( strstr ($info['role_name'],$vo['role_name']) ){
echo 'checked';
}
</php>
/>{$vo.role_name}</li>
</volist>
</ul>
</div>
<span class="required">*</span>
<div class="validate_msg_tiny ">至少选择一个</div>
</div>
<div class="button_info clearfix">
<input type="button" value="保存" class="btn_save" onclick="send()" />
<input type="button" value="取消" class="btn_save" />
</div>
</form>
</div>
<!--主要区域结束-->
<script type="text/javascript">
$(function(){
//点击之后的图标
$('.admin_off').addClass('admin_on').removeClass('admin_off');
});
</script>
<script type="text/javascript">
function send(){
$.ajax({
url: '__SELF__',
type: 'post',
dataType:'json',
data: $(".main_form").serializeArray(),
success: function(data) {
//判断是否修改成功!
if(data.status==0){
layer.msg(data.info,{icon: 5});
}else{
layer.msg(data.info,{icon: 6});
//延迟跳转
setTimeout(function () {
location.href = "{:U('Admin/index')}";
}, {:C('AJAX_TIME')});
}
}
});
}
</script>

View file

@ -0,0 +1,197 @@
<layout name="Public/layout"/>
{:jumps($infos['authority'],CONTROLLER_NAME)}
<script language="javascript" type="text/javascript">
//显示角色详细信息
function showDetail(flag, a) {
var detailDiv = a.parentNode.getElementsByTagName("div")[0];
if (flag) {
detailDiv.style.display = "block";
}
else
detailDiv.style.display = "none";
}
//删除
function deleteAdmin() {
var r = window.confirm("确定要删除此管理员吗?");
document.getElementById("operate_result_info").style.display = "block";
}
//全选
function selectAdmins(inputObj) {
var inputArray = document.getElementById("datalist").getElementsByTagName("input");
for (var i = 1; i < inputArray.length; i++) {
if (inputArray[i].type == "checkbox") {
inputArray[i].checked = inputObj.checked;
}
}
}
</script>
<!--主要区域开始-->
<div id="main">
<form action="__SELF__" method="get" id="search">
<!--查询-->
<div class="search_add">
<div>
角色:
<select id="selModules" class="select_search" name='role_name'>
<option value=''>全部</option>
<!--遍历角色-->
<volist name='role' id='vo'>
<option value='{$vo.role_name}'
<if condition="I('get.role_name') eq $vo['role_name'] ">
selected
<else />
</if>
>{$vo.role_name}</option>
</volist>
</select>
</div>
<div>手机:<input type="text" class="text_search width100" name='tel' value="{:I('get.tel')}"/></div>
<div>姓名:<input type="text" class="text_search width70" name='nickname' value="{:I('get.nickname')}"/></div>
<div>用户名:<input type="text" class="text_search width70" name='username' value="{:I('get.username')}"/></div>
<div>邮箱:<input type="text" class="text_search width80" name='email' value="{:I('get.email')}"/></div>
<div><input type="button" value="搜索" class="btn_search" id="btn_search" onclick="search()"/></div>
<!-- <input type="button" value="密码重置" class="btn_add" onclick="resetPwd();" />-->
<input type="button" value="增加" class="btn_add" onclick="location.href='add.html';" />
</div>
</form>
<!--数据区域:用表格展示数据-->
<div id="data">
<table id="datalist">
<tr>
<!-- <th class="th_select_all">
<input type="checkbox" onclick="selectAdmins(this);" />
<span>全选</span>
</th>-->
<th>管理员ID</th>
<th>姓名</th>
<th>登录名</th>
<th>电话</th>
<th>电子邮件</th>
<th>授权日期</th>
<th class="width100">拥有角色</th>
<th></th>
</tr>
<volist name="res['res']" id='vo' empty="$empty">
<tr>
<!-- <td><input type="checkbox" /></td>-->
<td>{$vo.id}</td>
<td>{$vo.nickname}</td>
<td>{$vo.username}</td>
<td>{$vo.tel}</td>
<td>{$vo.email}</td>
<td>{:date('Y-m-d',$vo['create_time'])}</td>
<td>
<a class="summary" onmouseover="showDetail(true,this);" onmouseout="showDetail(false,this);">
{:mb_substr($vo['role_name'],0,4,'utf-8')}...
</a>
<!--浮动的详细信息-->
<div class="detail_info">
{$vo.role_name}
</div>
</td>
<td class="td_modi">
<input type="button" value="修改" class="btn_modify" onclick=" location.href='__CONTROLLER__/edit/id/{$vo.id}' " />
<input type="button" value="删除" class="btn_delete" onclick="deletes('__CONTROLLER__/delete/id/{$vo.id}');" />
</td>
</tr>
</volist>
</table>
</div>
<!--分页-->
<div id="pages">
{$res['page']}
</div>
</div>
<!--主要区域结束-->
<script type="text/javascript">
//搜索效果
function search(){
layer.load(2); //加载
setTimeout(function(){
$('#search').submit();
},{:C('SEARCH_TIME')});
}
//下拉框提交
$(function(){
$('#selModules').change(function(){
$('#search').submit();
});
});
//键盘事件
$(document).keydown(function(event){
if(event.keyCode == 13){
// alert(event.keyCode);
search();
}
});
//删除
function deletes(obj){
layer.confirm('你确定真的要删除此用户?', {icon: 3, title:'提示'}, function(index){
if(index){
$.get(obj, function(data){
//判断是否删除成功!
if(data.status==0){
layer.msg(data.info,{icon: 5});
}else{
layer.msg(data.info,{icon: 6});
//延迟跳转
setTimeout(function () {
location.href = "{:U('Admin/index')}";
}, {:C('AJAX_TIME')});
}
});
}
layer.close(index);
});
}
</script>
<style type="text/css">
.empty{
font-weight:bold;
}
</style>
<script type="text/javascript">
$(function(){
//点击之后的图标
$('.admin_off').addClass('admin_on').removeClass('admin_off');
});
</script>

View file

@ -0,0 +1,106 @@
<layout name="Public/layout"/>
{:jumps($infos['authority'],CONTROLLER_NAME)}
<!--主要区域开始-->
<div id="main">
<form action="__SELF__" method="post" class="main_form">
<div class="text_info clearfix"><span>属性名称:</span></div>
<div class="input_info">
<input type="text" class="width200" name="name" value=''/>
<span class="required">*</span>
<div class="validate_msg_medium">不能为空且为20长度的字母、数字和汉字的组合</div>
</div>
<div class="text_info clearfix"><span>商品类型:</span></div>
<div class="input_info">
<select name="category_id">
<!--遍历类型-->
<volist name='category' id='vo'>
<option value="{$vo.id}">{$vo.name}</option>
</volist>
</select>
<span class="required">
<input type="button" value="增加" class="btn_add" onclick="location.href='{:U('Category/add')}';" />
</span>
<div class="validate_msg_tiny">至少选择一个类型</div>
</div>
<div class="text_info clearfix"><span>按钮类型:</span></div>
<div class="input_info">
<select name="type">
<option value="text">文本框</option>
<option value="textarea">内容框</option>
<option value="checkbox">多选框</option>
<option value="radio">单选框</option>
<option value="select">下拉框</option>
<option value="number">数字框</option>
<option value="range">滑动条</option>
<option value="date">日期</option>
<option value="time">时间</option>
<option value="email">邮箱</option>
</select>
</div>
<div class="text_info clearfix"><span>内容:</span></div>
<div class="input_info_high">
<textarea class="width300 height70" name='content'></textarea>
<div class="validate_msg_short ">100长度的字母、数字、汉字和下划线的组合</div>
</div>
<div class="text_info clearfix"><span>备注:</span></div>
<div class="input_info_high">
<textarea class="width300 height70" name='note'></textarea>
<div class="validate_msg_short ">100长度的字母、数字、汉字和下划线的组合</div>
</div>
<div class="button_info clearfix">
<input type="button" value="保存" class="btn_save" onclick="send()" />
<input type="button" value="取消" class="btn_save" />
</div>
</form>
</div>
<!--主要区域结束-->
<script type="text/javascript">
function send(){
$.ajax({
url: '__SELF__',
type: 'post',
dataType:'json',
data: $(".main_form").serializeArray(),
success: function(data) {
//判断是否添加成功!
if(data.status==0){
layer.msg(data.info,{icon: 5});
}else{
layer.msg(data.info,{icon: 6});
//延迟跳转
setTimeout(function () {
location.href = "{:U('Attribute/index')}";
}, {:C('AJAX_TIME')});
}
}
});
}
</script>
<script type="text/javascript">
$(function(){
//点击之后的图标
$('.bill_off').addClass('bill_on').removeClass('bill_off');
});
</script>

View file

@ -0,0 +1,110 @@
<layout name="Public/layout"/>
{:jumps($infos['authority'],CONTROLLER_NAME)}
<!--主要区域开始-->
<div id="main">
<form action="__SELF__" method="post" class="main_form">
<input type="hidden" name="id" value="{$info.id}" />
<div class="text_info clearfix"><span>属性名称:</span></div>
<div class="input_info">
<input type="text" class="width200" name="name" value='{$info.name}'/>
<span class="required">*</span>
<div class="validate_msg_medium">不能为空且为20长度的字母、数字和汉字的组合</div>
</div>
<div class="text_info clearfix"><span>商品类型:</span></div>
<div class="input_info">
<select name="category_id">
<!--遍历类型-->
<volist name='category' id='vo'>
<option value="{$vo.id}"
<php>
if($vo['name']==$info['parent_name']){ echo 'selected'; }
</php>
>{$vo.name}</option>
</volist>
</select>
<span class="required">
<input type="button" value="增加" class="btn_add" onclick="location.href='{:U('Category/add')}';" />
</span>
<div class="validate_msg_tiny">至少选择一个类型</div>
</div>
<div class="text_info clearfix"><span>按钮类型:</span></div>
<div class="input_info">
<select name="type">
<option value="text" <php>if('text'==$info['type']){ echo 'selected'; }</php> >文本框</option>
<option value="textarea" <php>if('textarea'==$info['type']){ echo 'selected'; }</php>>内容框</option>
<option value="checkbox" <php>if('checkbox'==$info['type']){ echo 'selected'; }</php>>多选框</option>
<option value="radio" <php>if('radio'==$info['type']){ echo 'selected'; }</php>>单选框</option>
<option value="select" <php>if('select'==$info['type']){ echo 'selected'; }</php>>下拉框</option>
<option value="number" <php>if('number'==$info['type']){ echo 'selected'; }</php>>数字框</option>
<option value="range" <php>if('range'==$info['type']){ echo 'selected'; }</php>>滑动条</option>
<option value="date" <php>if('date'==$info['type']){ echo 'selected'; }</php>>日期</option>
<option value="time" <php>if('time'==$info['type']){ echo 'selected'; }</php>>时间</option>
<option value="email" <php>if('email'==$info['type']){ echo 'selected'; }</php>>邮箱</option>
</select>
</div>
<div class="text_info clearfix"><span>内容:</span></div>
<div class="input_info_high">
<textarea class="width300 height70" name='content'>{$info.content}</textarea>
<div class="validate_msg_short ">100长度的字母、数字、汉字和下划线的组合</div>
</div>
<div class="text_info clearfix"><span>备注:</span></div>
<div class="input_info_high">
<textarea class="width300 height70" name='note'>{$info.note}</textarea>
<div class="validate_msg_short ">100长度的字母、数字、汉字和下划线的组合</div>
</div>
<div class="button_info clearfix">
<input type="button" value="保存" class="btn_save" onclick="send()" />
<input type="button" value="取消" class="btn_save" />
</div>
</form>
</div>
<!--主要区域结束-->
<script type="text/javascript">
function send(){
$.ajax({
url: '__SELF__',
type: 'post',
dataType:'json',
data: $(".main_form").serializeArray(),
success: function(data) {
//判断是否添加成功!
if(data.status==0){
layer.msg(data.info,{icon: 5});
}else{
layer.msg(data.info,{icon: 6});
//延迟跳转
setTimeout(function () {
location.href = "{:U('Attribute/index')}";
}, {:C('AJAX_TIME')});
}
}
});
}
</script>
<script type="text/javascript">
$(function(){
//点击之后的图标
$('.bill_off').addClass('bill_on').removeClass('bill_off');
});
</script>

View file

@ -0,0 +1,91 @@
<layout name="Public/layout"/>
{:jumps($infos['authority'],CONTROLLER_NAME)}
<!--主要区域开始-->
<div id="main">
<form action="" method="">
<!--查询-->
<div class="search_add">
<input type="button" value="增加" class="btn_add" onclick="location.href='__CONTROLLER__/add';" />
</div>
<!--数据区域:用表格展示数据-->
<div id="data">
<table id="datalist">
<tr>
<th>属性 ID</th>
<th>属性名称</th>
<th>属性内容</th>
<th>所属类型</th>
<th>创建时间</th>
<th class="td_modi"></th>
</tr>
<volist name="res['res']" id='vo'>
<tr>
<td>{$vo.id}</td>
<td>{$vo.name}</td>
<td>{:mb_substr($vo['content'],0,15,'utf-8')}...</td>
<td>{$vo.parent_name}</td>
<td>{:date('Y-m-d H:i:s',$vo['time']) }</td>
<td>
<input type="button" value="修改" class="btn_modify" onclick="location.href='__CONTROLLER__/edit/id/{$vo.id}';"/>
<input type="button" value="删除" class="btn_delete" onclick="deletes('__CONTROLLER__/delete/id/{$vo.id}');" />
</td>
</tr>
</volist>
</table>
</div>
<!--分页-->
<div id="pages">
{$res['page']}
</div>
</form>
</div>
<!--主要区域结束-->
<script type="text/javascript">
//删除
function deletes(obj){
layer.confirm('你确定真的要删除此属性?', {icon: 3, title:'提示'}, function(index){
if(index){
$.get(obj, function(data){
//判断是否删除成功!
if(data.status==0){
layer.msg(data.info,{icon: 5});
}else{
layer.msg(data.info,{icon: 6});
//延迟跳转
setTimeout(function () {
location.href = "{:U('Attribute/index')}";
}, {:C('AJAX_TIME')});
}
});
}
layer.close(index);
});
}
</script>
<style type="text/css">
.empty{
font-weight:bold;
}
</style>
<script type="text/javascript">
$(function(){
//点击之后的图标
$('.bill_off').addClass('bill_on').removeClass('bill_off');
});
</script>

View file

@ -0,0 +1,59 @@
<layout name="Public/layout"/>
{:jumps($infos['authority'],CONTROLLER_NAME)}
<!--主要区域开始-->
<div id="main">
<form action="__SELF__" method="post" class="main_form">
<div class="text_info clearfix"><span>品牌名称:</span></div>
<div class="input_info">
<input type="text" class="width200" name="name"/>
<span class="required">*</span>
<div class="validate_msg_medium">不能为空且为20长度的字母、数字和汉字的组合</div>
</div>
<div class="button_info clearfix">
<input type="button" value="保存" class="btn_save" onclick="send()" />
<input type="button" value="取消" class="btn_save" />
</div>
</form>
</div>
<!--主要区域结束-->
<script type="text/javascript">
function send(){
$.ajax({
url: '__SELF__',
type: 'post',
dataType:'json',
data: $(".main_form").serializeArray(),
success: function(data) {
//判断是否添加成功!
if(data.status==0){
layer.msg(data.info,{icon: 5});
}else{
layer.msg(data.info,{icon: 6});
//延迟跳转
setTimeout(function () {
location.href = "{:U('Brand/index')}";
}, {:C('AJAX_TIME')});
}
}
});
}
</script>
<script type="text/javascript">
$(function(){
//点击之后的图标
$('.bill_off').addClass('bill_on').removeClass('bill_off');
});
</script>

View file

@ -0,0 +1,60 @@
<layout name="Public/layout"/>
{:jumps($infos['authority'],CONTROLLER_NAME)}
<!--主要区域开始-->
<div id="main">
<form action="__SELF__" method="post" class="main_form">
<input type="hidden" name="id" value="{$info.id}"/>
<div class="text_info clearfix"><span>职位名称:</span></div>
<div class="input_info">
<input type="text" class="width200" name="name" value="{$info.name}"/>
<span class="required">*</span>
<div class="validate_msg_medium">不能为空且为20长度的字母、数字和汉字的组合</div>
</div>
<div class="button_info clearfix">
<input type="button" value="保存" class="btn_save" onclick="send()" />
<input type="button" value="取消" class="btn_save" />
</div>
</form>
</div>
<!--主要区域结束-->
<script type="text/javascript">
function send(){
$.ajax({
url: '__SELF__',
type: 'post',
dataType:'json',
data: $(".main_form").serializeArray(),
success: function(data) {
//判断是否添加成功!
if(data.status==0){
layer.msg(data.info,{icon: 5});
}else{
layer.msg(data.info,{icon: 6});
//延迟跳转
setTimeout(function () {
location.href = "{:U('Brand/index')}";
}, {:C('AJAX_TIME')});
}
}
});
}
</script>
<script type="text/javascript">
$(function(){
//点击之后的图标
$('.bill_off').addClass('bill_on').removeClass('bill_off');
});
</script>

View file

@ -0,0 +1,87 @@
<layout name="Public/layout"/>
{:jumps($infos['authority'],CONTROLLER_NAME)}
<!--主要区域开始-->
<div id="main">
<form action="" method="">
<!--查询-->
<div class="search_add">
<input type="button" value="增加" class="btn_add" onclick="location.href='__CONTROLLER__/add';" />
</div>
<!--数据区域:用表格展示数据-->
<div id="data">
<table id="datalist">
<tr>
<th>品牌 ID</th>
<th>品牌名称</th>
<th>创建时间</th>
<th class="td_modi"></th>
</tr>
<volist name="res['res']" id='vo'>
<tr>
<td>{$vo.id}</td>
<td>{$vo.name}</td>
<td>{:date('Y-m-d H:i:s',$vo['time']) }</td>
<td>
<input type="button" value="修改" class="btn_modify" onclick="location.href='__CONTROLLER__/edit/id/{$vo.id}';"/>
<input type="button" value="删除" class="btn_delete" onclick="deletes('__CONTROLLER__/delete/id/{$vo.id}');" />
</td>
</tr>
</volist>
</table>
</div>
<!--分页-->
<div id="pages">
{$res['page']}
</div>
</form>
</div>
<!--主要区域结束-->
<script type="text/javascript">
//删除
function deletes(obj){
layer.confirm('你确定真的要删除此品牌?', {icon: 3, title:'提示'}, function(index){
if(index){
$.get(obj, function(data){
//判断是否删除成功!
if(data.status==0){
layer.msg(data.info,{icon: 5});
}else{
layer.msg(data.info,{icon: 6});
//延迟跳转
setTimeout(function () {
location.href = "{:U('Brand/index')}";
}, {:C('AJAX_TIME')});
}
});
}
layer.close(index);
});
}
</script>
<style type="text/css">
.empty{
font-weight:bold;
}
</style>
<script type="text/javascript">
$(function(){
//点击之后的图标
$('.bill_off').addClass('bill_on').removeClass('bill_off');
});
</script>

View file

@ -0,0 +1,383 @@
<layout name="Public/layout"/>
{:jumps($infos['authority'],CONTROLLER_NAME)}
<!--主要区域开始-->
<div id="main">
<form action="__SELF__" method="post" class="main_form">
<div class="text_info clearfix"><span>编号:</span></div>
<div class="input_info">
<input type="text" class="width200" name='sn'/>
<span class="required">*</span>
<div class="validate_msg_medium">不能为空且为20长度的字母、数字和汉字的组合</div>
</div>
<div class="text_info clearfix"><span>商品名称:</span></div>
<div class="input_info">
<input type="text" class="width200" name='name'/>
<span class="required">*</span>
<div class="validate_msg_medium">不能为空且为20长度的字母、数字和汉字的组合</div>
</div>
<div class="text_info clearfix"><span>所属门店:</span></div>
<div class="input_info">
<select name="store_id">
<!--分类-->
<volist name="store" id="vo">
<option value="{$vo.id}">{$vo.name}</option>
</volist>
</select>
<input type="button" value="增加" class="btn_add" onclick="location.href='{:U('Brand/add')}';" />
</div>
<div class="text_info clearfix"><span>商品品牌:</span></div>
<div class="input_info">
<select name="brand_id">
<!--分类-->
<volist name="brand" id="vo">
<option value="{$vo.id}">{$vo.name}</option>
</volist>
</select>
<input type="button" value="增加" class="btn_add" onclick="location.href='{:U('Brand/add')}';" />
</div>
<div class="text_info clearfix"><span>商品类型:</span></div>
<div class="input_info" id="as">
<select name="category_id" id="category_id" onchange="get_attr(this)" >
<!--遍历类型-->
<volist name='category' id='vo'>
<option value="{$vo.id}" >{$vo.name}</option>
</volist>
</select>
<span class="required">
<input type="button" value="增加" class="btn_add" onclick="location.href='{:U('Category/add')}';" />
</span>
<div class="validate_msg_tiny">至少选择一个类型</div>
</div>
<div class="button_info clearfix">
{:W('Menu/goods')}
</div>
<div class="button_info clearfix">
<input type="button" value="保存" class="btn_save" onclick="send()" />
<input type="button" value="取消" class="btn_save" />
</div>
</form>
</div>
<!--主要区域结束-->
<style type="text/css">
.l-text{
width: 100px;
}
.li_width label input{
position: relative;
top:10px;
}
</style>
<script type="text/javascript">
$(function(){
//点击之后的图标
$('.buy_off').addClass('buy_on').removeClass('buy_off');
});
</script>
<script type="text/javascript">
function send(){
$.ajax({
url: '__SELF__',
type: 'post',
dataType:'json',
data: $(".main_form").serializeArray(),
success: function(data) {
// console.log(data);
//判断是否添加成功!
if(data.status==0){
layer.msg(data.info,{icon: 5});
}else{
layer.msg(data.info,{icon: 6});
//延迟跳转
setTimeout(function () {
location.href = "{:U('Buy/index')}";
}, {:C('AJAX_TIME')});
}
}
});
}
</script>
<script type="text/javascript">
$(function(){
$('#category_id').change();
});
function get_attr(obj){
var isa=jQuery("#category_id option:selected").val();
$('.afters').remove();
$('.div_contentlist').html('');
$.get('__CONTROLLER__/get_attr/id/'+isa, function(data){
// console.log(data);
//第一层遍历
$.each( data, function(index, value)
{
content = (value.content).split(",");
//console.log(value.id);
//下拉框
var option='';
$.each( content, function(k, v)
{
if( value.type=='select' ){
option+="<option value=' "+v+" ' >"+v+"</option>"
}
});
var checkedstrat='<ul class="Father_Title"><li>'+value.name+'</li></ul> <ul class="Father_Item'+index+'">';
var checked_end='</ul><br/><br/><br/><br/>';
var check='';
$.each( content, function(k, v)
{
if( value.type=='checkbox' ){
// console.log(value.name);
check+=' <li class="li_width"><label><input id="Checkbox'+value.id+k+'" type="checkbox" class="chcBox_Width" value="'+v+'" />'+v+'<span class="li_empty" ></span></label></li> ';
}
});
//下拉框结束
if( value.type == 'select' ){
var str="<div class='text_info clearfix afters'><span>"+value.name+"</span></div><div class='input_info afters'> <select name='attrbute_id["+value.id+"]' >"+ option +"</select> <span class='required'></span><div class='validate_msg_tiny'>至少选择一个</div></div> ";
$('#as').after(str);
}else if(value.type == 'text'){
var str="<div class='text_info clearfix afters'><span>"+value.name+"</span></div><div class='input_info afters'> <input type='text' name='attrbute_id["+value.id+"]' /> <span class='required'></span><div class='validate_msg_tiny'>至少选择一个类型</div></div> ";
$('#as').after(str);
}else if(value.type == 'date'){
var str="<div class='text_info clearfix afters'><span>"+value.name+"</span></div><div class='input_info afters'> <input type='date' name='attrbute_id["+value.id+"]' /> <span class='required'></span><div class='validate_msg_tiny'>请填写</div></div> ";
$('#as').after(str);
}else if(value.type == 'checkbox'){
var str=checkedstrat+check+checked_end;
$('.div_contentlist').append(str);
$(".div_contentlist label").bind("change", function () {
step.Creat_Table();
});
var step = {
//SKU信息组合
Creat_Table: function () {
step.hebingFunction();
var SKUObj = $(".Father_Title");
//var skuCount = SKUObj.length;//
var arrayTile = new Array();//标题组数
var arrayInfor = new Array();//盛放每组选中的CheckBox值的对象
var arrayColumn = new Array();//指定列,用来合并哪些列
var bCheck = true;//是否全选
var columnIndex = 0;
$.each(SKUObj, function (i, item){
arrayColumn.push(columnIndex);
columnIndex++;
arrayTile.push(SKUObj.find("li").eq(i).html().replace("", ""));
var itemName = "Father_Item" + i;
//选中的CHeckBox取值
var order = new Array();
$("." + itemName + " input[type=checkbox]:checked").each(function (){
order.push($(this).val());
});
arrayInfor.push(order);
if (order.join() == ""){
bCheck = false;
}
//var skuValue = SKUObj.find("li").eq(index).html();
});
//开始创建Table表
if (bCheck == true) {
var RowsCount = 0;
$("#createTable").html("");
var table = $("<table id=\"process\" border=\"1\" cellpadding=\"1\" cellspacing=\"0\" style=\"width:100%;padding:5px;\"></table>");
table.appendTo($("#createTable"));
var thead = $("<thead></thead>");
thead.appendTo(table);
var trHead = $("<tr></tr>");
trHead.appendTo(thead);
//创建表头
$.each(arrayTile, function (index, item) {
var td = $("<th>" + item + "</th>");
td.appendTo(trHead);
});
// var itemColumHead = $("<th style=\"width:70px;\">价格</th><th style=\"width:70px;\">库存</th> ");
var itemColumHead = $("<th style=\"width:70px;\">价格</th><th style=\"width:70px;\">库存</th> ");
itemColumHead.appendTo(trHead);
// var itemColumHead2 = $("<td >商家编码</td><td >商品条形码</td>");
// itemColumHead2.appendTo(trHead);
var tbody = $("<tbody></tbody>");
tbody.appendTo(table);
////生成组合
var zuheDate = step.doExchange(arrayInfor);
if (zuheDate.length > 0) {
//创建行
$.each(zuheDate, function (index, item) {
var td_array = item.split(",");
var tr = $("<tr></tr>");
tr.appendTo(tbody);
$.each(td_array, function (i, values) {
var td = $("<td>" + values + "</td>");
td.appendTo(tr);
// console.log( values );
});
// console.log(item);
var td1 = $("<td > <input name=\"spec_item[]\" class=\"l-text\" type=\"hidden\" value=\""+item+" \" > <input name=\"price[]\" class=\"l-text\" type=\"text\" value=\"\" ></td>" );
td1.appendTo(tr);
var td2 = $("<td > <input name=\"count[]\" class=\"l-text\" type=\"text\" value=\"\"></td>");
td2.appendTo(tr);
//var td3 = $("<td ><input name=\"Txt_NumberSon\" class=\"l-text\" type=\"text\" value=\"\"></td>");
//td3.appendTo(tr);
//var td4 = $("<td ><input name=\"Txt_SnSon\" class=\"l-text\" type=\"text\" value=\"\"></td>");
//td4.appendTo(tr);
});
}
//结束创建Table表
arrayColumn.pop();//删除数组中最后一项
//合并单元格
$(table).mergeCell({
// 目前只有cols这么一个配置项, 用数组表示列的索引,从0开始
cols: arrayColumn
});
} else{
//未全选中,清除表格
document.getElementById('createTable').innerHTML="";
}
},//合并行
hebingFunction: function () {
$.fn.mergeCell = function (options) {
return this.each(function () {
var cols = options.cols;
for (var i = cols.length - 1; cols[i] != undefined; i--) {
// fixbug console调试
// console.debug(cols[i]);
mergeCell($(this), cols[i]);
}
dispose($(this));
});
};
function mergeCell($table, colIndex) {
$table.data('col-content', ''); // 存放单元格内容
$table.data('col-rowspan', 1); // 存放计算的rowspan值 默认为1
$table.data('col-td', $()); // 存放发现的第一个与前一行比较结果不同td(jQuery封装过的), 默认一个"空"的jquery对象
$table.data('trNum', $('tbody tr', $table).length); // 要处理表格的总行数, 用于最后一行做特殊处理时进行判断之用
// 进行"扫面"处理 关键是定位col-td, 和其对应的rowspan
$('tbody tr', $table).each(function (index) {
// td:eq中的colIndex即列索引
var $td = $('td:eq(' + colIndex + ')', this);
// 取出单元格的当前内容
var currentContent = $td.html();
// 第一次时走此分支
if ($table.data('col-content') == '') {
$table.data('col-content', currentContent);
$table.data('col-td', $td);
} else {
// 上一行与当前行内容相同
if ($table.data('col-content') == currentContent) {
// 上一行与当前行内容相同则col-rowspan累加, 保存新值
var rowspan = $table.data('col-rowspan') + 1;
$table.data('col-rowspan', rowspan);
// 值得注意的是 如果用了$td.remove()就会对其他列的处理造成影响
$td.hide();
// 最后一行的情况比较特殊一点
// 比如最后2行 td中的内容是一样的, 那么到最后一行就应该把此时的col-td里保存的td设置rowspan
if (++index == $table.data('trNum'))
$table.data('col-td').attr('rowspan', $table.data('col-rowspan'));
} else { // 上一行与当前行内容不同
// col-rowspan默认为1, 如果统计出的col-rowspan没有变化, 不处理
if ($table.data('col-rowspan') != 1) {
$table.data('col-td').attr('rowspan', $table.data('col-rowspan'));
}
// 保存第一次出现不同内容的td, 和其内容, 重置col-rowspan
$table.data('col-td', $td);
$table.data('col-content', $td.html());
$table.data('col-rowspan', 1);
}
}
});
}
// 同样是个private函数 清理内存之用
function dispose($table) {
$table.removeData();
}
},
//组合数组
doExchange: function (doubleArrays) {
var len = doubleArrays.length;
if (len >= 2) {
var arr1 = doubleArrays[0];
var arr2 = doubleArrays[1];
var len1 = doubleArrays[0].length;
var len2 = doubleArrays[1].length;
var newlen = len1 * len2;
var temp = new Array(newlen);
var index = 0;
for (var i = 0; i < len1; i++) {
for (var j = 0; j < len2; j++) {
temp[index] = arr1[i] + "," + arr2[j];
index++;
}
}
var newArray = new Array(len - 1);
newArray[0] = temp;
if (len > 2) {
var _count = 1;
for (var i = 2; i < len; i++) {
newArray[_count] = doubleArrays[i];
_count++;
}
}
//console.log(newArray);
return step.doExchange(newArray);
}
else {
return doubleArrays[0];
}
}
}
return step;
/*******************************************************************/
}
});
});
// layer.msg(isa);
}
</script>

View file

@ -0,0 +1,225 @@
<layout name="Public/layout"/>
{:jumps($infos['authority'],CONTROLLER_NAME)}
<!--主要区域开始-->
<div id="main">
<div class="text_info clearfix"><span>编号:</span></div>
<div class="input_info">
<input type="text" class="width200" name='sn' value='{$info.sn}' disabled/>
<span class="required">*</span>
<div class="validate_msg_medium">不能为空且为20长度的字母、数字和汉字的组合</div>
</div>
<div class="text_info clearfix"><span>商品名称:</span></div>
<div class="input_info">
<input type="text" class="width200" name='name' value='{$info.name}' disabled/>
<span class="required">*</span>
<div class="validate_msg_medium">不能为空且为20长度的字母、数字和汉字的组合</div>
</div>
<div class="text_info clearfix"><span>所属门店:</span></div>
<div class="input_info">
<select name="store_id" disabled>
<!--分类-->
<volist name="store" id="vo">
<option value="{$vo.id}"
<php>if($info['store_id']==$vo['id']){ echo 'selected'; }</php>
>{$vo.name}</option>
</volist>
</select>
<!-- <input type="button" value="增加" class="btn_add" onclick="location.href='{:U('Brand/add')}';" />-->
</div>
<div class="text_info clearfix"><span>单价:</span></div>
<div class="input_info">
<input type="text" class="width110" name='price' value='{$info.price}' disabled/>
<span class="required"></span>
<div class="validate_msg_medium">不能为空且为20长度的字母、数字和汉字的组合</div>
</div>
<div class="text_info clearfix"><span>库存:</span></div>
<div class="input_info">
<input type="text" class="width110" name='stock' value="{:array_sum( explode(',',$info['count']) ); }" disabled/>
<span class="required">*</span>
<div class="validate_msg_medium">不能为空且为20长度的字母、数字和汉字的组合</div>
</div>
<div class="text_info clearfix"><span>购入时间:</span></div>
<div class="input_info">
<input type="text" class="width130" name='stock' value="{:date('Y-m-d H:i:s',$info['time']) }" disabled/>
<span class="required">*</span>
<div class="validate_msg_medium">不能为空且为20长度的字母、数字和汉字的组合</div>
</div>
<php>
$arr=array_unique( explode(',', $info['attrbute_value'] ) );
$count=explode(',', $info['count'] );
// dump($info['attrbute_value']);
//dump($arr);
</php>
<div class="input_info">
<table id="datalist">
<tr>
<th>属性</th>
<volist name="arr" id="vo">
<td>{$vo}</td>
</volist>
</tr>
<tr>
<th>数量</th>
<volist name="count" id="vo">
<td>{$vo}</td>
</volist>
</tr>
</table>
</div>
<div class="text_info clearfix"><span></span></div>
<div class="text_info clearfix"><span>商品品牌:</span></div>
<div class="input_info">
<select name="brand_id" disabled>
<!--品牌分类-->
<volist name="brand" id="vo">
<option value="{$vo.id}"
<php>if($info['brand_id']==$vo['id']){ echo 'selected'; }</php>
>{$vo.name}</option>
</volist>
</select>
</div>
<div class="text_info clearfix"><span>商品类型:</span></div>
<div class="input_info" id="as">
<select name="category_id" id="category_id" onchange="get_attr(this)" disabled>
<!--遍历类型-->
<volist name='category' id='vo'>
<option value="{$vo.id}"
<php>if($info['category_id']==$vo['id']){ echo 'selected'; }</php>
>{$vo.name}</option>
</volist>
</select>
<span class="required">
</span>
<div class="validate_msg_tiny">至少选择一个类型</div>
</div>
</div>
<!--主要区域结束-->
<script type="text/javascript">
$(function(){
//点击之后的图标
$('.buy_off').addClass('buy_on').removeClass('buy_off');
});
</script>
<script type="text/javascript">
$(function(){
$('#category_id').change();
});
function get_attr(obj){
//判断选中的类型
var isa=jQuery("#category_id option:selected").val();
var attrbute_id="{$info.attrbute_id}".split(",");
// var attrbute_value="{$info.attrbute_value}".split(",");
//删除原来的
$('.afters').remove();
$.get('__CONTROLLER__/get_attr/id/'+isa, function(data){
// console.log(data);
//第一层遍历
$.each( data, function(index, value)
{
content = (value.content).split(",");
// console.log(value.id);
//下拉框
var option='';
$.each( content, function(k, v)
{
v=$.trim(v);
if( value.type=='select' ){
option+="<option value='"+v+"' >"+v+"</option>"
}
});
//下拉框结束
if( value.type == 'select' ){
var str="<div class='text_info clearfix afters'><span>"+value.name+"</span></div><div class='input_info afters'> <select name='attrbute_id["+value.id+"]' class='get_content_"+value.id+"' disabled>"+ option +"</select> <span class='required'></span><div class='validate_msg_tiny'>至少选择一个</div></div> ";
$('#as').after(str);
attr('select');
}else if(value.type == 'text'){
var str="<div class='text_info clearfix afters'><span>"+value.name+"</span></div><div class='input_info afters'> <input type='text' class='get_contents_"+value.id+" ' name='attrbute_id["+value.id+"]' disabled/> <span class='required'></span><div class='validate_msg_tiny'>至少选择一个类型</div></div> ";
$('#as').after(str);
attr('text');
}else if(value.type == 'date'){
var str="<div class='text_info clearfix afters'><span>"+value.name+"</span></div><div class='input_info afters'> <input type='date' class='get_contents_"+value.id+" ' name='attrbute_id["+value.id+"]' disabled/> <span class='required'></span><div class='validate_msg_tiny'>请填写</div></div> ";
$('#as').after(str);
attr('date');
}
});
});
// layer.msg(isa);
}
</script>
<php>
$attrbute_id= array_values( array_filter( explode(",",$info['attrbute_id']) ) );
$attrbute_value= explode(",",$info['val']) ;
echo "<script type='text/javascript'> function attr(obj){ if(obj=='select'){ ";
foreach($attrbute_id as $k=>$v){
printf(" \$(\".get_content_%u option[value='%s'] \").prop(\"selected\",true); \r\n",trim($v),trim($attrbute_value[$k]) );
}
echo " }else{ ";
foreach($attrbute_id as $k=>$v){
printf(" \$(\".get_contents_%u\").val(\"%s\"); ",trim($v),trim($attrbute_value[$k]) );
}
echo " } }</script>";
</php>

View file

@ -0,0 +1,468 @@
<layout name="Public/layout"/>
{:jumps($infos['authority'],CONTROLLER_NAME)}
<!--主要区域开始-->
<div id="main">
<form action="__SELF__" method="post" class="main_form">
<input type="hidden" name="id" value='{$info.id}' />
<div class="text_info clearfix"><span>编号:</span></div>
<div class="input_info">
<input type="text" class="width200" name='sn' value='{$info.sn}'/>
<span class="required">*</span>
<div class="validate_msg_medium">不能为空且为20长度的字母、数字和汉字的组合</div>
</div>
<div class="text_info clearfix"><span>商品名称:</span></div>
<div class="input_info">
<input type="text" class="width200" name='name' value='{$info.name}'/>
<span class="required">*</span>
<div class="validate_msg_medium">不能为空且为20长度的字母、数字和汉字的组合</div>
</div>
<div class="text_info clearfix"><span>所属门店:</span></div>
<div class="input_info">
<select name="store_id">
<!--分类-->
<volist name="store" id="vo">
<option value="{$vo.id}"
<php>if($info['store_id']==$vo['id']){ echo 'selected'; }</php>
>{$vo.name}</option>
</volist>
</select>
<input type="button" value="增加" class="btn_add" onclick="location.href='{:U('Brand/add')}';" />
</div>
<div class="text_info clearfix"><span>商品品牌:</span></div>
<div class="input_info">
<select name="brand_id">
<!--品牌分类-->
<volist name="brand" id="vo">
<option value="{$vo.id}"
<php>if($info['brand_id']==$vo['id']){ echo 'selected'; }</php>
>{$vo.name}</option>
</volist>
</select>
<input type="button" value="增加" class="btn_add" onclick="location.href='{:U('Brand/add')}';" />
</div>
<div class="text_info clearfix"><span>商品类型:</span></div>
<div class="input_info" id="as">
<select name="category_id" id="category_id" onchange="get_attr(this)" >
<!--遍历类型-->
<volist name='category' id='vo'>
<option value="{$vo.id}"
<php>if($info['category_id']==$vo['id']){ echo 'selected'; }</php>
>{$vo.name}</option>
</volist>
</select>
<span class="required">
<input type="button" value="增加" class="btn_add" onclick="location.href='{:U('Category/add')}';" />
</span>
<div class="validate_msg_tiny">至少选择一个类型</div>
</div>
<div class="button_info clearfix">
{:W('Menu/goods')}
</div>
<div class="button_info clearfix">
<input type="button" value="保存" class="btn_save" onclick="send()" />
<input type="button" value="取消" class="btn_save" />
</div>
</form>
</div>
<!--主要区域结束-->
<style type="text/css">
.l-text{
width: 100px;
}
.li_width label input{
position: relative;
top:10px;
}
</style>
<script type="text/javascript">
$(function(){
//点击之后的图标
$('.buy_off').addClass('buy_on').removeClass('buy_off');
});
</script>
<script type="text/javascript">
function send(){
$.ajax({
url: '__SELF__',
type: 'post',
dataType:'json',
data: $(".main_form").serializeArray(),
success: function(data) {
// console.log(data);
//判断是否添加成功!
if(data.status==0){
layer.msg(data.info,{icon: 5});
}else{
layer.msg(data.info,{icon: 6});
//延迟跳转
setTimeout(function () {
location.href = "{:U('Buy/index')}";
}, {:C('AJAX_TIME')});
}
}
});
}
</script>
<script type="text/javascript">
$(function(){
$('#category_id').change();
});
function get_attr(obj){
var isa=jQuery("#category_id option:selected").val();
$('.afters').remove();
$('.div_contentlist').html('');
$.get('__CONTROLLER__/get_attr/id/'+isa, function(data){
// console.log(data);
//第一层遍历
$.each( data, function(index, value)
{
content = (value.content).split(",");
//console.log(value.id);
//下拉框
var option='';
$.each( content, function(k, v)
{
if( value.type=='select' ){
option+="<option value='"+v+"' >"+v+"</option>"
}
});
var checkedstrat='<ul class="Father_Title"><li>'+value.name+'</li></ul> <ul class="Father_Item'+index+'">';
var checked_end='</ul><br/><br/><br/><br/>';
var check='';
$.each( content, function(k, v)
{
if( value.type=='checkbox' ){
// console.log(value.name);
check+=' <li class="li_width"><label><input id="Checkbox'+value.id+k+'" type="checkbox" class="chcBox_Width" value="'+v+'" />'+v+'<span class="li_empty" ></span></label></li> ';
}
});
//下拉框结束
if( value.type == 'select' ){
var str="<div class='text_info clearfix afters'><span>"+value.name+"</span></div><div class='input_info afters'> <select name='attrbute_id["+value.id+"]' class='get_contents_"+value.id+" ' >"+ option +"</select> <span class='required'></span><div class='validate_msg_tiny'>至少选择一个</div></div> ";
$('#as').after(str);
attr('select');
}else if(value.type == 'text'){
var str="<div class='text_info clearfix afters'><span>"+value.name+"</span></div><div class='input_info afters'> <input type='text' name='attrbute_id["+value.id+"]' class='get_contents_"+value.id+" ' /> <span class='required'></span><div class='validate_msg_tiny'>至少选择一个类型</div></div> ";
$('#as').after(str);
attr('text');
}else if(value.type == 'date'){
var str="<div class='text_info clearfix afters'><span>"+value.name+"</span></div><div class='input_info afters'> <input type='date' name='attrbute_id["+value.id+"]' class='get_contents_"+value.id+" ' /> <span class='required'></span><div class='validate_msg_tiny'>请填写</div></div> ";
$('#as').after(str);
attr('date');
}else if(value.type == 'checkbox'){
var str=checkedstrat+check+checked_end;
$('.div_contentlist').append(str);
attr('checkbox');
$(".div_contentlist label").bind("change", function () {
step.Creat_Table();
});
var step = {
//SKU信息组合
Creat_Table: function () {
step.hebingFunction();
var SKUObj = $(".Father_Title");
//var skuCount = SKUObj.length;//
var arrayTile = new Array();//标题组数
var arrayInfor = new Array();//盛放每组选中的CheckBox值的对象
var arrayColumn = new Array();//指定列,用来合并哪些列
var bCheck = true;//是否全选
var columnIndex = 0;
$.each(SKUObj, function (i, item){
arrayColumn.push(columnIndex);
columnIndex++;
arrayTile.push(SKUObj.find("li").eq(i).html().replace("", ""));
var itemName = "Father_Item" + i;
//选中的CHeckBox取值
var order = new Array();
$("." + itemName + " input[type=checkbox]:checked").each(function (){
order.push($(this).val());
});
arrayInfor.push(order);
if (order.join() == ""){
bCheck = false;
}
//var skuValue = SKUObj.find("li").eq(index).html();
});
//开始创建Table表
if (bCheck == true) {
var RowsCount = 0;
$("#createTable").html("");
var table = $("<table id=\"process\" border=\"1\" cellpadding=\"1\" cellspacing=\"0\" style=\"width:100%;padding:5px;\"></table>");
table.appendTo($("#createTable"));
var thead = $("<thead></thead>");
thead.appendTo(table);
var trHead = $("<tr></tr>");
trHead.appendTo(thead);
//创建表头
$.each(arrayTile, function (index, item) {
var td = $("<th>" + item + "</th>");
td.appendTo(trHead);
});
// var itemColumHead = $("<th style=\"width:70px;\">价格</th><th style=\"width:70px;\">库存</th> ");
var itemColumHead = $("<th style=\"width:70px;\">价格</th><th style=\"width:70px;\">库存</th> ");
itemColumHead.appendTo(trHead);
// var itemColumHead2 = $("<td >商家编码</td><td >商品条形码</td>");
// itemColumHead2.appendTo(trHead);
var tbody = $("<tbody></tbody>");
tbody.appendTo(table);
////生成组合
var zuheDate = step.doExchange(arrayInfor);
if (zuheDate.length > 0) {
//创建行
$.each(zuheDate, function (index, item) {
var td_array = item.split(",");
var tr = $("<tr></tr>");
tr.appendTo(tbody);
$.each(td_array, function (i, values) {
var td = $("<td>" + values + "</td>");
td.appendTo(tr);
// console.log( values );
});
//把php字符串赋值给js,并js转为数组
var counts="{$info.count}";
counts = counts.split(',');
//把php字符串赋值给js,并js转为数组
var prices="{$info.prices}";
prices = prices.split(',');
// console.log(index);
var td1 = $("<td > <input name=\"spec_item[]\" class=\"l-text\" type=\"hidden\" value=\""+item+" \" > <input name=\"price[]\" class=\"l-text\" type=\"text\" value=\" "+prices[index]+" \" ></td>" );
td1.appendTo(tr);
var td2 = $("<td > <input name=\"count[]\" class=\"l-text\" type=\"text\" value=\" "+counts[index]+"\"></td>");
td2.appendTo(tr);
//var td3 = $("<td ><input name=\"Txt_NumberSon\" class=\"l-text\" type=\"text\" value=\"\"></td>");
//td3.appendTo(tr);
//var td4 = $("<td ><input name=\"Txt_SnSon\" class=\"l-text\" type=\"text\" value=\"\"></td>");
//td4.appendTo(tr);
});
}
//结束创建Table表
arrayColumn.pop();//删除数组中最后一项
//合并单元格
$(table).mergeCell({
// 目前只有cols这么一个配置项, 用数组表示列的索引,从0开始
cols: arrayColumn
});
} else{
//未全选中,清除表格
document.getElementById('createTable').innerHTML="";
}
},//合并行
hebingFunction: function () {
$.fn.mergeCell = function (options) {
return this.each(function () {
var cols = options.cols;
for (var i = cols.length - 1; cols[i] != undefined; i--) {
// fixbug console调试
// console.debug(cols[i]);
mergeCell($(this), cols[i]);
}
dispose($(this));
});
};
function mergeCell($table, colIndex) {
$table.data('col-content', ''); // 存放单元格内容
$table.data('col-rowspan', 1); // 存放计算的rowspan值 默认为1
$table.data('col-td', $()); // 存放发现的第一个与前一行比较结果不同td(jQuery封装过的), 默认一个"空"的jquery对象
$table.data('trNum', $('tbody tr', $table).length); // 要处理表格的总行数, 用于最后一行做特殊处理时进行判断之用
// 进行"扫面"处理 关键是定位col-td, 和其对应的rowspan
$('tbody tr', $table).each(function (index) {
// td:eq中的colIndex即列索引
var $td = $('td:eq(' + colIndex + ')', this);
// 取出单元格的当前内容
var currentContent = $td.html();
// 第一次时走此分支
if ($table.data('col-content') == '') {
$table.data('col-content', currentContent);
$table.data('col-td', $td);
} else {
// 上一行与当前行内容相同
if ($table.data('col-content') == currentContent) {
// 上一行与当前行内容相同则col-rowspan累加, 保存新值
var rowspan = $table.data('col-rowspan') + 1;
$table.data('col-rowspan', rowspan);
// 值得注意的是 如果用了$td.remove()就会对其他列的处理造成影响
$td.hide();
// 最后一行的情况比较特殊一点
// 比如最后2行 td中的内容是一样的, 那么到最后一行就应该把此时的col-td里保存的td设置rowspan
if (++index == $table.data('trNum'))
$table.data('col-td').attr('rowspan', $table.data('col-rowspan'));
} else { // 上一行与当前行内容不同
// col-rowspan默认为1, 如果统计出的col-rowspan没有变化, 不处理
if ($table.data('col-rowspan') != 1) {
$table.data('col-td').attr('rowspan', $table.data('col-rowspan'));
}
// 保存第一次出现不同内容的td, 和其内容, 重置col-rowspan
$table.data('col-td', $td);
$table.data('col-content', $td.html());
$table.data('col-rowspan', 1);
}
}
});
}
// 同样是个private函数 清理内存之用
function dispose($table) {
$table.removeData();
}
},
//组合数组
doExchange: function (doubleArrays) {
var len = doubleArrays.length;
if (len >= 2) {
var arr1 = doubleArrays[0];
var arr2 = doubleArrays[1];
var len1 = doubleArrays[0].length;
var len2 = doubleArrays[1].length;
var newlen = len1 * len2;
var temp = new Array(newlen);
var index = 0;
for (var i = 0; i < len1; i++) {
for (var j = 0; j < len2; j++) {
temp[index] = arr1[i] + "," + arr2[j];
index++;
}
}
var newArray = new Array(len - 1);
newArray[0] = temp;
if (len > 2) {
var _count = 1;
for (var i = 2; i < len; i++) {
newArray[_count] = doubleArrays[i];
_count++;
}
}
//console.log(newArray);
return step.doExchange(newArray);
}
else {
return doubleArrays[0];
}
}
}
return step;
/*******************************************************************/
}
});
});
// layer.msg(isa);
}
</script>
<script type="text/javascript">
$(function(){
//延迟加载属性
setTimeout(function () {
$(".div_contentlist label").change();
}, 100);
});
</script>
<php>
//多选框选中状态
//$attrbute_id=explode(",",$info['attrbute_id']);
$attrbute_value=explode(":",$info['attrbute_value']);
$attrbute_value=array_filter( array_unique( $attrbute_value )) ;
$attrbute_id= array_values( array_filter( explode(",",$info['attrbute_id']) ) );
$attrbute_val= explode(",",$info['val']) ;
$arr=array();
foreach($attrbute_value as $v){
$arr[]=explode(",",$v);
}
foreach($arr as $v){
foreach($v as $val){
$arrs.=$val.',';
}
}
$attrbute_value=array_values( array_filter( explode(",",$arrs) ) );
//dump($attrbute_value);
//dump($attrbute_id);
//dump($attrbute_val);
echo "<script type='text/javascript'> function attr(obj){ if(obj=='checkbox'){ \r\n ";
echo "\$(\"input\").each(function(){ \r\n";
foreach($attrbute_value as $k=>$v){
printf(" if( \$(this).val()=='%s' ) { $(this).prop(\"checked\",true); } \r\n",trim($attrbute_value[$k]) );
}
echo"}); \r\n";
echo " }else if(obj=='select'){ \r\n";
foreach($attrbute_id as $k=>$v){
printf(" \$(\".get_content_%u option[value='%s'] \").prop(\"selected\",true); \r\n",trim($v),trim($attrbute_val[$k]) );
}
echo " }else{ \r\n ";
foreach($attrbute_id as $k=>$v){
printf(" \$(\".get_contents_%u\").val(\"%s\"); \r\n",trim($v),trim($attrbute_val[$k]) );
}
echo " } }</script>";
</php>
<script type="text/javascript">
$(function(){
setTimeout(function () {
$(".l-text [name='price[]']").val('123') ;
}, 1000);
});
</script>

View file

@ -0,0 +1,275 @@
<layout name="Public/layout"/>
{:jumps($infos['authority'],CONTROLLER_NAME)}
<!--主要区域开始-->
<div id="main">
<form action="__SELF__" method="get" id="search">
<!--查询-->
<div class="search_add">
<div>货号:<input type="text" class="text_search width130" value="{:I('get.sn')}" name='sn'/></div>
<div>名称:<input type="text" class="width110 text_search" value="{:I('get.name')}" name='name'/></div>
<div>
排序:
<select class="select_search" name='order'>
<option value="id asc">默认</option>
<option value="price asc" <php> if( I('get.order')=='price asc' ){ echo 'selected';} </php> > ↑ 价格从低到高 </option>
<option value="price desc" <php> if( I('get.order')=='price desc' ){ echo 'selected';} </php> > ↓ 价格从高到低 </option>
<option value="count asc" <php> if( I('get.order')=='count asc' ){ echo 'selected';} </php> > ↑ 库存从低到高 </option>
<option value="count desc" <php> if( I('get.order')=='count desc' ){ echo 'selected';} </php> > ↓ 库存从高到低 </option>
<option value="time asc" <php> if( I('get.order')=='time asc' ){ echo 'selected';} </php> > ↑ 日期从低到高 </option>
<option value="time desc" <php> if( I('get.order')=='time desc' ){ echo 'selected';} </php> > ↓ 日期从高到低 </option>
</select>
</div>
<div>
品牌:
<select class="select_search" name='brand' id='status'>
<option value="">全部</option>
<!--遍历品牌-->
<volist name="brand" id="vo">
<option value="{$vo.id}" <php> if( I('get.brand')==$vo['id'] ){ echo 'selected';} </php> >{$vo.name}</option>
</volist>
</select>
</div>
<div>
类型:
<select class="select_search" name='category'>
<option value="">全部</option>
<!--遍历类型-->
<volist name="category" id="vo">
<option value="{$vo.id}" <php> if( I('get.category')==$vo['id'] ){ echo 'selected';} </php> >{$vo.name}</option>
</volist>
</select>
</div>
<input type="button" value="增加" class="btn_add" onclick="location.href='__CONTROLLER__/add';" />
<div style='margin:5px 0;display:block; '>
<div>
价格:<input type="text" class="width70 text_search" value="{:I('get.start_price')}" name='start_price'/>
-
<input type="text" class="width70 text_search" value="{:I('get.end_price')}" name='end_price'/>
</div>
<div>
库存:<input type="text" class="width70 text_search" value="{:I('get.start_stock')}" name='start_stock'/>
-
<input type="text" class="width70 text_search" value="{:I('get.end_stock')}" name='end_stock'/>
</div>
<div>
日期:<input type="date" class="width130 text_search" value="{:I('get.start_time')}" name='start_time'/>
-
<input type="date" class="width130 text_search" value="{:I('get.end_time')}" name='end_time'/>
</div>
</div>
</div>
<!--搜索开始-->
<div>
<input type="button" value="搜索" class="btn_search" id="btn_search" onclick="search()"/>
<button onclick="preview('data');" id="print">打印</button>
</div>
<!--搜索结束-->
</form>
<!--数据区域:用表格展示数据-->
<div id="data">
<table id="datalist">
<tr>
<th>商品ID</th>
<th>货号</th>
<th>名称</th>
<!-- <th>品牌</th>-->
<th>类型</th>
<th>购入数量</th>
<th>剩余库存</th>
<th>购入总价</th>
<th>单价</th>
<th>购入日期</th>
<th>操作</th>
<th></th>
</tr>
<!--开始遍历数据-->
<volist name="res['res']" id="vo" empty="$empty">
<tr>
<td>{$vo.id}</td>
<td>{$vo.sn}</td>
<td>{$vo.name}</td>
<!-- <td>{$vo.brand_name}</td>-->
<td>{$vo.category_name}</td>
<td>{$vo.sum}</td>
<td>{:array_sum( explode(',',$vo['count']) ); }</td>
<td>{$vo.total}</td>
<td>{$vo.price}</td>
<td>{:date('Y-m-d H:i:s',$vo['time'])}</td>
<td class="td_modi">
<input type="button" value="修改" class="btn_modify" onclick=" location.href='__CONTROLLER__/edit/id/{$vo.id}'; " />
<input type="button" value="删除" class="btn_delete" onclick=" deletes( '__CONTROLLER__/delete/id/{$vo.id}' ); " />
</td>
<td><a href="__CONTROLLER__/detail/id/{$vo.id}">明细</a></td>
</tr>
</volist>
<!--遍历结束-->
</table>
<p>操作说明:<br />
1、创建则开通记载创建时间<br />
2、禁止后则无法登陆<br />
3、重新开通后则可以正常使用<br />
4、删除后标示为删除不能再开通、修改、删除<br />
</div>
<!--分页-->
<div id="pages">
{$res['page']}
</div>
</div>
<!--主要区域结束-->
<script type="text/javascript">
function search(){
layer.load(2); //加载
setTimeout(function(){
$('#search').submit();
},{:C('SEARCH_TIME')});
}
$(function(){
$('#status').change(function(){
$('#search').submit();
});
$('select').change(function(){
$('#search').submit();
});
});
//键盘事件
$(document).keydown(function(event){
if(event.keyCode == 13){
// alert(event.keyCode);
search();
}
});
//禁止 开通
function set_status(obj){
layer.confirm('你确定真的要修改用户状态吗?', {icon: 0, title:'提示'}, function(index){
if(index){
$.ajax({
type: "GET",
url: obj,
success: function(data){
//判断修改加成功!
if(data.status==0){
layer.msg(data.info,{icon: 5});
}else{
layer.msg(data.info,{icon: 6});
//延迟跳转
setTimeout(function () {
location.href = "{:U('Account/index')}";
}, {:C('AJAX_TIME')});
}
}
});
// layer.msg(obj);
}
layer.close(index);
});
}
//删除
function deletes(obj){
layer.confirm('你确定真的要删除此商品?', {icon: 3, title:'提示'}, function(index){
if(index){
$.get(obj, function(data){
//判断是否删除成功!
if(data.status==0){
layer.msg(data.info,{icon: 5});
}else{
layer.msg(data.info,{icon: 6});
//延迟跳转
setTimeout(function () {
location.href = "{:U('Goods/index')}";
}, {:C('AJAX_TIME')});
}
});
}
layer.close(index);
});
}
</script>
<style type="text/css">
.empty{
font-weight:bold;
}
</style>
<script type="text/javascript">
$(function(){
//点击之后的图标
$('.buy_off').addClass('buy_on').removeClass('buy_off');
});
</script>
<style type="text/css">
#print{
width:50px;
height:24px;
}
</style>
<script type="text/javascript">
function preview(id){
var sprnhtml=$('#'+id).html(); //获取区域内容
var selfhtml=$('body').html(); //获取当前页的html
$('body').html(sprnhtml);
window.print();
$('body').html(selfhtml);
}
</script>

View file

@ -0,0 +1,59 @@
<layout name="Public/layout"/>
{:jumps($infos['authority'],CONTROLLER_NAME)}
<!--主要区域开始-->
<div id="main">
<form action="__SELF__" method="post" class="main_form">
<div class="text_info clearfix"><span>类别名称:</span></div>
<div class="input_info">
<input type="text" class="width200" name="name"/>
<span class="required">*</span>
<div class="validate_msg_medium">不能为空且为20长度的字母、数字和汉字的组合</div>
</div>
<div class="button_info clearfix">
<input type="button" value="保存" class="btn_save" onclick="send()" />
<input type="button" value="取消" class="btn_save" />
</div>
</form>
</div>
<!--主要区域结束-->
<script type="text/javascript">
function send(){
$.ajax({
url: '__SELF__',
type: 'post',
dataType:'json',
data: $(".main_form").serializeArray(),
success: function(data) {
//判断是否添加成功!
if(data.status==0){
layer.msg(data.info,{icon: 5});
}else{
layer.msg(data.info,{icon: 6});
//延迟跳转
setTimeout(function () {
location.href = "{:U('Category/index')}";
}, {:C('AJAX_TIME')});
}
}
});
}
</script>
<script type="text/javascript">
$(function(){
//点击之后的图标
$('.bill_off').addClass('bill_on').removeClass('bill_off');
});
</script>

View file

@ -0,0 +1,60 @@
<layout name="Public/layout"/>
{:jumps($infos['authority'],CONTROLLER_NAME)}
<!--主要区域开始-->
<div id="main">
<form action="__SELF__" method="post" class="main_form">
<input type="hidden" name="id" value="{$info.id}"/>
<div class="text_info clearfix"><span>商品名称:</span></div>
<div class="input_info">
<input type="text" class="width200" name="name" value="{$info.name}"/>
<span class="required">*</span>
<div class="validate_msg_medium">不能为空且为20长度的字母、数字和汉字的组合</div>
</div>
<div class="button_info clearfix">
<input type="button" value="保存" class="btn_save" onclick="send()" />
<input type="button" value="取消" class="btn_save" />
</div>
</form>
</div>
<!--主要区域结束-->
<script type="text/javascript">
function send(){
$.ajax({
url: '__SELF__',
type: 'post',
dataType:'json',
data: $(".main_form").serializeArray(),
success: function(data) {
//判断是否添加成功!
if(data.status==0){
layer.msg(data.info,{icon: 5});
}else{
layer.msg(data.info,{icon: 6});
//延迟跳转
setTimeout(function () {
location.href = "{:U('Category/index')}";
}, {:C('AJAX_TIME')});
}
}
});
}
</script>
<script type="text/javascript">
$(function(){
//点击之后的图标
$('.bill_off').addClass('bill_on').removeClass('bill_off');
});
</script>

View file

@ -0,0 +1,87 @@
<layout name="Public/layout"/>
{:jumps($infos['authority'],CONTROLLER_NAME)}
<!--主要区域开始-->
<div id="main">
<form action="" method="">
<!--查询-->
<div class="search_add">
<input type="button" value="增加" class="btn_add" onclick="location.href='__CONTROLLER__/add';" />
</div>
<!--数据区域:用表格展示数据-->
<div id="data">
<table id="datalist">
<tr>
<th>分类 ID</th>
<th>分类名称</th>
<th>创建时间</th>
<th class="td_modi"></th>
</tr>
<volist name="res['res']" id='vo' empty="$empty">
<tr>
<td>{$vo.id}</td>
<td>{$vo.name}</td>
<td>{:date('Y-m-d H:i:s',$vo['time']) }</td>
<td>
<input type="button" value="修改" class="btn_modify" onclick="location.href='__CONTROLLER__/edit/id/{$vo.id}';"/>
<input type="button" value="删除" class="btn_delete" onclick="deletes('__CONTROLLER__/delete/id/{$vo.id}');" />
</td>
</tr>
</volist>
</table>
</div>
<!--分页-->
<div id="pages">
{$res['page']}
</div>
</form>
</div>
<!--主要区域结束-->
<script type="text/javascript">
//删除
function deletes(obj){
layer.confirm('你确定真的要删除此分类?', {icon: 3, title:'提示'}, function(index){
if(index){
$.get(obj, function(data){
//判断是否删除成功!
if(data.status==0){
layer.msg(data.info,{icon: 5});
}else{
layer.msg(data.info,{icon: 6});
//延迟跳转
setTimeout(function () {
location.href = "{:U('Category/index')}";
}, {:C('AJAX_TIME')});
}
});
}
layer.close(index);
});
}
</script>
<style type="text/css">
.empty{
font-weight:bold;
}
</style>
<script type="text/javascript">
$(function(){
//点击之后的图标
$('.bill_off').addClass('bill_on').removeClass('bill_off');
});
</script>

View file

@ -0,0 +1,388 @@
<layout name="Public/layout"/>
{:jumps($infos['authority'],CONTROLLER_NAME)}
<!--主要区域开始-->
<div id="main">
<form action="__SELF__" method="post" class="main_form">
<div class="text_info clearfix"><span>编号:</span></div>
<div class="input_info">
<input type="text" class="width200" name='sn'/>
<span class="required">*</span>
<div class="validate_msg_medium">不能为空且为20长度的字母、数字和汉字的组合</div>
</div>
<div class="text_info clearfix"><span>商品名称:</span></div>
<div class="input_info">
<input type="text" class="width200" name='name'/>
<span class="required">*</span>
<div class="validate_msg_medium">不能为空且为20长度的字母、数字和汉字的组合</div>
</div>
<input type="button" value="增加属性" class="btn_add" onclick="location.href='__MODULE__/Attribute/add';" />
<div class="text_info clearfix"><span>所属门店:</span></div>
<div class="input_info">
<select name="store_id">
<!--分类-->
<volist name="store" id="vo">
<option value="{$vo.id}">{$vo.name}</option>
</volist>
</select>
<input type="button" value="增加" class="btn_add" onclick="location.href='{:U('Brand/add')}';" />
</div>
<div class="text_info clearfix"><span>商品品牌:</span></div>
<div class="input_info">
<select name="brand_id">
<!--分类-->
<volist name="brand" id="vo">
<option value="{$vo.id}">{$vo.name}</option>
</volist>
</select>
<input type="button" value="增加" class="btn_add" onclick="location.href='{:U('Brand/add')}';" />
</div>
<div class="text_info clearfix"><span>商品类型:</span></div>
<div class="input_info" id="as">
<select name="category_id" id="category_id" onchange="get_attr(this)" >
<!--遍历类型-->
<volist name='category' id='vo'>
<option value="{$vo.id}" >{$vo.name}</option>
</volist>
</select>
<span class="required">
<input type="button" value="增加" class="btn_add" onclick="location.href='{:U('Category/add')}';" />
</span>
<div class="validate_msg_tiny">至少选择一个类型</div>
</div>
<div class="button_info clearfix">
{:W('Menu/goods')}
</div>
<div class="button_info clearfix">
<input type="button" value="保存" class="btn_save" onclick="send()" />
<input type="button" value="取消" class="btn_save" />
</div>
</form>
</div>
<!--主要区域结束-->
<style type="text/css">
.l-text{
width: 100px;
}
.li_width label input{
position: relative;
top:10px;
}
</style>
<script type="text/javascript">
$(function(){
//点击之后的图标
$('.warehouse_off').addClass('warehouse_on').removeClass('warehouse_off');
});
</script>
<script type="text/javascript">
function send(){
$.ajax({
url: '__SELF__',
type: 'post',
dataType:'json',
data: $(".main_form").serializeArray(),
success: function(data) {
// console.log(data);
//判断是否添加成功!
if(data.status==0){
layer.msg(data.info,{icon: 5});
}else{
layer.msg(data.info,{icon: 6});
//延迟跳转
setTimeout(function () {
location.href = "{:U('Goods/index')}";
}, {:C('AJAX_TIME')});
}
}
});
}
</script>
<script type="text/javascript">
$(function(){
$('#category_id').change();
});
function get_attr(obj){
var isa=jQuery("#category_id option:selected").val();
$('.afters').remove();
$('.div_contentlist').html('');
$.get('__CONTROLLER__/get_attr/id/'+isa, function(data){
// console.log(data);
//第一层遍历
$.each( data, function(index, value)
{
content = (value.content).split(",");
//console.log(value.id);
//下拉框
var option='';
$.each( content, function(k, v)
{
if( value.type=='select' ){
option+="<option value=' "+v+" ' >"+v+"</option>"
}
});
var checkedstrat='<ul class="Father_Title"><li>'+value.name+'</li></ul> <ul class="Father_Item'+index+'">';
var checked_end='</ul><br/><br/><br/><br/>';
var check='';
$.each( content, function(k, v)
{
if( value.type=='checkbox' ){
// console.log(value.name);
check+=' <li class="li_width"><label><input id="Checkbox'+value.id+k+'" type="checkbox" class="chcBox_Width" value="'+v+'" />'+v+'<span class="li_empty" ></span></label></li> ';
}
});
//下拉框结束
if( value.type == 'select' ){
var str="<div class='text_info clearfix afters'><span>"+value.name+"</span></div><div class='input_info afters'> <select name='attrbute_id["+value.id+"]' >"+ option +"</select> <span class='required'></span><div class='validate_msg_tiny'>至少选择一个</div></div> ";
$('#as').after(str);
}else if(value.type == 'text'){
var str="<div class='text_info clearfix afters'><span>"+value.name+"</span></div><div class='input_info afters'> <input type='text' name='attrbute_id["+value.id+"]' /> <span class='required'></span><div class='validate_msg_tiny'>至少选择一个类型</div></div> ";
$('#as').after(str);
}else if(value.type == 'date'){
var str="<div class='text_info clearfix afters'><span>"+value.name+"</span></div><div class='input_info afters'> <input type='date' name='attrbute_id["+value.id+"]' /> <span class='required'></span><div class='validate_msg_tiny'>请填写</div></div> ";
$('#as').after(str);
}else if(value.type == 'checkbox'){
var str=checkedstrat+check+checked_end;
$('.div_contentlist').append(str);
$(".div_contentlist label").bind("change", function () {
step.Creat_Table();
});
var step = {
//SKU信息组合
Creat_Table: function () {
step.hebingFunction();
var SKUObj = $(".Father_Title");
//var skuCount = SKUObj.length;//
var arrayTile = new Array();//标题组数
var arrayInfor = new Array();//盛放每组选中的CheckBox值的对象
var arrayColumn = new Array();//指定列,用来合并哪些列
var bCheck = true;//是否全选
var columnIndex = 0;
$.each(SKUObj, function (i, item){
arrayColumn.push(columnIndex);
columnIndex++;
arrayTile.push(SKUObj.find("li").eq(i).html().replace("", ""));
var itemName = "Father_Item" + i;
//选中的CHeckBox取值
var order = new Array();
$("." + itemName + " input[type=checkbox]:checked").each(function (){
order.push($(this).val());
});
arrayInfor.push(order);
if (order.join() == ""){
bCheck = false;
}
//var skuValue = SKUObj.find("li").eq(index).html();
});
//开始创建Table表
if (bCheck == true) {
var RowsCount = 0;
$("#createTable").html("");
var table = $("<table id=\"process\" border=\"1\" cellpadding=\"1\" cellspacing=\"0\" style=\"width:100%;padding:5px;\"></table>");
table.appendTo($("#createTable"));
var thead = $("<thead></thead>");
thead.appendTo(table);
var trHead = $("<tr></tr>");
trHead.appendTo(thead);
//创建表头
$.each(arrayTile, function (index, item) {
var td = $("<th>" + item + "</th>");
td.appendTo(trHead);
});
// var itemColumHead = $("<th style=\"width:70px;\">价格</th><th style=\"width:70px;\">库存</th> ");
var itemColumHead = $("<th style=\"width:70px;\">价格</th><th style=\"width:70px;\">库存</th> ");
itemColumHead.appendTo(trHead);
// var itemColumHead2 = $("<td >商家编码</td><td >商品条形码</td>");
// itemColumHead2.appendTo(trHead);
var tbody = $("<tbody></tbody>");
tbody.appendTo(table);
////生成组合
var zuheDate = step.doExchange(arrayInfor);
if (zuheDate.length > 0) {
//创建行
$.each(zuheDate, function (index, item) {
var td_array = item.split(",");
var tr = $("<tr></tr>");
tr.appendTo(tbody);
$.each(td_array, function (i, values) {
var td = $("<td>" + values + "</td>");
td.appendTo(tr);
// console.log( values );
});
// console.log(item);
var td1 = $("<td > <input name=\"spec_item[]\" class=\"l-text\" type=\"hidden\" value=\""+item+" \" > <input name=\"price[]\" class=\"l-text\" type=\"text\" value=\"\" ></td>" );
td1.appendTo(tr);
var td2 = $("<td > <input name=\"count[]\" class=\"l-text\" type=\"text\" value=\"\"></td>");
td2.appendTo(tr);
//var td3 = $("<td ><input name=\"Txt_NumberSon\" class=\"l-text\" type=\"text\" value=\"\"></td>");
//td3.appendTo(tr);
//var td4 = $("<td ><input name=\"Txt_SnSon\" class=\"l-text\" type=\"text\" value=\"\"></td>");
//td4.appendTo(tr);
});
}
//结束创建Table表
arrayColumn.pop();//删除数组中最后一项
//合并单元格
$(table).mergeCell({
// 目前只有cols这么一个配置项, 用数组表示列的索引,从0开始
cols: arrayColumn
});
} else{
//未全选中,清除表格
document.getElementById('createTable').innerHTML="";
}
},//合并行
hebingFunction: function () {
$.fn.mergeCell = function (options) {
return this.each(function () {
var cols = options.cols;
for (var i = cols.length - 1; cols[i] != undefined; i--) {
// fixbug console调试
// console.debug(cols[i]);
mergeCell($(this), cols[i]);
}
dispose($(this));
});
};
function mergeCell($table, colIndex) {
$table.data('col-content', ''); // 存放单元格内容
$table.data('col-rowspan', 1); // 存放计算的rowspan值 默认为1
$table.data('col-td', $()); // 存放发现的第一个与前一行比较结果不同td(jQuery封装过的), 默认一个"空"的jquery对象
$table.data('trNum', $('tbody tr', $table).length); // 要处理表格的总行数, 用于最后一行做特殊处理时进行判断之用
// 进行"扫面"处理 关键是定位col-td, 和其对应的rowspan
$('tbody tr', $table).each(function (index) {
// td:eq中的colIndex即列索引
var $td = $('td:eq(' + colIndex + ')', this);
// 取出单元格的当前内容
var currentContent = $td.html();
// 第一次时走此分支
if ($table.data('col-content') == '') {
$table.data('col-content', currentContent);
$table.data('col-td', $td);
} else {
// 上一行与当前行内容相同
if ($table.data('col-content') == currentContent) {
// 上一行与当前行内容相同则col-rowspan累加, 保存新值
var rowspan = $table.data('col-rowspan') + 1;
$table.data('col-rowspan', rowspan);
// 值得注意的是 如果用了$td.remove()就会对其他列的处理造成影响
$td.hide();
// 最后一行的情况比较特殊一点
// 比如最后2行 td中的内容是一样的, 那么到最后一行就应该把此时的col-td里保存的td设置rowspan
if (++index == $table.data('trNum'))
$table.data('col-td').attr('rowspan', $table.data('col-rowspan'));
} else { // 上一行与当前行内容不同
// col-rowspan默认为1, 如果统计出的col-rowspan没有变化, 不处理
if ($table.data('col-rowspan') != 1) {
$table.data('col-td').attr('rowspan', $table.data('col-rowspan'));
}
// 保存第一次出现不同内容的td, 和其内容, 重置col-rowspan
$table.data('col-td', $td);
$table.data('col-content', $td.html());
$table.data('col-rowspan', 1);
}
}
});
}
// 同样是个private函数 清理内存之用
function dispose($table) {
$table.removeData();
}
},
//组合数组
doExchange: function (doubleArrays) {
var len = doubleArrays.length;
if (len >= 2) {
var arr1 = doubleArrays[0];
var arr2 = doubleArrays[1];
var len1 = doubleArrays[0].length;
var len2 = doubleArrays[1].length;
var newlen = len1 * len2;
var temp = new Array(newlen);
var index = 0;
for (var i = 0; i < len1; i++) {
for (var j = 0; j < len2; j++) {
temp[index] = arr1[i] + "," + arr2[j];
index++;
}
}
var newArray = new Array(len - 1);
newArray[0] = temp;
if (len > 2) {
var _count = 1;
for (var i = 2; i < len; i++) {
newArray[_count] = doubleArrays[i];
_count++;
}
}
//console.log(newArray);
return step.doExchange(newArray);
}
else {
return doubleArrays[0];
}
}
}
return step;
/*******************************************************************/
}
});
});
// layer.msg(isa);
}
</script>

View file

@ -0,0 +1,187 @@
<layout name="Public/layout"/>
{:jumps($infos['authority'],CONTROLLER_NAME)}
<!--主要区域开始-->
<div id="main">
<div class="text_info clearfix"><span>编号:</span></div>
<div class="input_info">
<input type="text" class="width200" name='sn' value='{$info.sn}' disabled/>
<span class="required">*</span>
<div class="validate_msg_medium">不能为空且为20长度的字母、数字和汉字的组合</div>
</div>
<div class="text_info clearfix"><span>商品名称:</span></div>
<div class="input_info">
<input type="text" class="width200" name='name' value='{$info.name}' disabled/>
<span class="required">*</span>
<div class="validate_msg_medium">不能为空且为20长度的字母、数字和汉字的组合</div>
</div>
<div class="text_info clearfix"><span>所属门店:</span></div>
<div class="input_info">
<select name="store_id" disabled>
<!--分类-->
<volist name="store" id="vo">
<option value="{$vo.id}"
<php>if($info['store_id']==$vo['id']){ echo 'selected'; }</php>
>{$vo.name}</option>
</volist>
</select>
<!--<input type="button" value="增加" class="btn_add" onclick="location.href='{:U('Brand/add')}';" />-->
</div>
<div class="text_info clearfix"><span>单价:</span></div>
<div class="input_info">
<input type="text" class="width110" name='price' value='{$info.price}' disabled/>
<span class="required"></span>
<div class="validate_msg_medium">不能为空且为20长度的字母、数字和汉字的组合</div>
</div>
<div class="text_info clearfix"><span>库存:</span></div>
<div class="input_info">
<input type="text" class="width110" name='stock' value="{:array_sum( explode(',',$info['count']) ); }" disabled/>
<span class="required">*</span>
<div class="validate_msg_medium">不能为空且为20长度的字母、数字和汉字的组合</div>
</div>
<div class="text_info clearfix"><span>商品品牌:</span></div>
<div class="input_info">
<select name="brand_id" disabled>
<!--品牌分类-->
<volist name="brand" id="vo">
<option value="{$vo.id}"
<php>if($info['brand_id']==$vo['id']){ echo 'selected'; }</php>
>{$vo.name}</option>
</volist>
</select>
</div>
<div class="text_info clearfix"><span>商品类型:</span></div>
<div class="input_info" id="as">
<select name="category_id" id="category_id" onchange="get_attr(this)" disabled>
<!--遍历类型-->
<volist name='category' id='vo'>
<option value="{$vo.id}"
<php>if($info['category_id']==$vo['id']){ echo 'selected'; }</php>
>{$vo.name}</option>
</volist>
</select>
<span class="required">
</span>
<div class="validate_msg_tiny">至少选择一个类型</div>
</div>
</div>
<!--主要区域结束-->
<script type="text/javascript">
$(function(){
//点击之后的图标
$('.warehouse_off').addClass('warehouse_on').removeClass('warehouse_off');
});
</script>
<script type="text/javascript">
$(function(){
$('#category_id').change();
});
function get_attr(obj){
//判断选中的类型
var isa=jQuery("#category_id option:selected").val();
var attrbute_id="{$info.attrbute_id}".split(",");
// var attrbute_value="{$info.attrbute_value}".split(",");
//删除原来的
$('.afters').remove();
$.get('__CONTROLLER__/get_attr/id/'+isa, function(data){
// console.log(data);
//第一层遍历
$.each( data, function(index, value)
{
content = (value.content).split(",");
// console.log(value.id);
//下拉框
var option='';
$.each( content, function(k, v)
{
v=$.trim(v);
if( value.type=='select' ){
option+="<option value='"+v+"' >"+v+"</option>"
}
});
//下拉框结束
if( value.type == 'select' ){
var str="<div class='text_info clearfix afters'><span>"+value.name+"</span></div><div class='input_info afters'> <select name='attrbute_id["+value.id+"]' class='get_content_"+value.id+"' disabled>"+ option +"</select> <span class='required'></span><div class='validate_msg_tiny'>至少选择一个</div></div> ";
$('#as').after(str);
attr('select');
}else if(value.type == 'text'){
var str="<div class='text_info clearfix afters'><span>"+value.name+"</span></div><div class='input_info afters'> <input type='text' class='get_contents_"+value.id+" ' name='attrbute_id["+value.id+"]' disabled/> <span class='required'></span><div class='validate_msg_tiny'>至少选择一个类型</div></div> ";
$('#as').after(str);
attr('text');
}else if(value.type == 'date'){
var str="<div class='text_info clearfix afters'><span>"+value.name+"</span></div><div class='input_info afters'> <input type='date' class='get_contents_"+value.id+" ' name='attrbute_id["+value.id+"]' disabled/> <span class='required'></span><div class='validate_msg_tiny'>请填写</div></div> ";
$('#as').after(str);
attr('date');
}
});
});
// layer.msg(isa);
}
</script>
<php>
$attrbute_id= array_values( array_filter( explode(",",$info['attrbute_id']) ) );
$attrbute_value= explode(",",$info['val']) ;
echo "<script type='text/javascript'> function attr(obj){ if(obj=='select'){ ";
foreach($attrbute_id as $k=>$v){
printf(" \$(\".get_content_%u option[value='%s'] \").prop(\"selected\",true); \r\n",trim($v),trim($attrbute_value[$k]) );
}
echo " }else{ ";
foreach($attrbute_id as $k=>$v){
printf(" \$(\".get_contents_%u\").val(\"%s\"); ",trim($v),trim($attrbute_value[$k]) );
}
echo " } }</script>";
</php>

View file

@ -0,0 +1,402 @@
<layout name="Public/layout"/>
<!--主要区域开始-->
<div id="main">
<form action="__SELF__" method="post" class="main_form">
<input type="hidden" name="id" value='{$info.id}' />
<div class="text_info clearfix"><span>编号:</span></div>
<div class="input_info">
<input type="text" class="width200" name='sn' value='{$info.sn}'/>
<span class="required">*</span>
<div class="validate_msg_medium">不能为空且为20长度的字母、数字和汉字的组合</div>
</div>
<div class="text_info clearfix"><span>商品名称:</span></div>
<div class="input_info">
<input type="text" class="width200" name='name' value='{$info.name}'/>
<span class="required">*</span>
<div class="validate_msg_medium">不能为空且为20长度的字母、数字和汉字的组合</div>
</div>
<div class="text_info clearfix"><span>商品品牌:</span></div>
<div class="input_info">
<select name="brand_id">
<!--品牌分类-->
<volist name="brand" id="vo">
<option value="{$vo.id}"
<php>if($info['brand_id']==$vo['id']){ echo 'selected'; }</php>
>{$vo.name}</option>
</volist>
</select>
<input type="button" value="增加" class="btn_add" onclick="location.href='{:U('Brand/add')}';" />
</div>
<div class="text_info clearfix"><span>商品类型:</span></div>
<div class="input_info" id="as">
<select name="category_id" id="category_id" onchange="get_attr(this)" >
<!--遍历类型-->
<volist name='category' id='vo'>
<option value="{$vo.id}"
<php>if($info['category_id']==$vo['id']){ echo 'selected'; }</php>
>{$vo.name}</option>
</volist>
</select>
<span class="required">
<input type="button" value="增加" class="btn_add" onclick="location.href='{:U('Category/add')}';" />
</span>
<div class="validate_msg_tiny">至少选择一个类型</div>
</div>
<div class="button_info clearfix">
{:W('Menu/goods')}
</div>
<div class="button_info clearfix">
<input type="button" value="保存" class="btn_save" onclick="send()" />
<input type="button" value="取消" class="btn_save" />
</div>
</form>
</div>
<!--主要区域结束-->
<style type="text/css">
.l-text{
width: 100px;
}
.li_width label input{
position: relative;
top:10px;
}
</style>
<script type="text/javascript">
$(function(){
//点击之后的图标
$('.warehouse_off').addClass('warehouse_on').removeClass('warehouse_off');
});
</script>
<script type="text/javascript">
function send(){
$.ajax({
url: '__SELF__',
type: 'post',
dataType:'json',
data: $(".main_form").serializeArray(),
success: function(data) {
// console.log(data);
//判断是否添加成功!
if(data.status==0){
layer.msg(data.info,{icon: 5});
}else{
layer.msg(data.info,{icon: 6});
//延迟跳转
setTimeout(function () {
location.href = "{:U('Goods/index')}";
}, {:C('AJAX_TIME')});
}
}
});
}
</script>
<script type="text/javascript">
$(function(){
$('#category_id').change();
});
function get_attr(obj){
var isa=jQuery("#category_id option:selected").val();
$('.afters').remove();
$('.div_contentlist').html('');
$.get('__CONTROLLER__/get_attr/id/'+isa, function(data){
// console.log(data);
//第一层遍历
$.each( data, function(index, value)
{
content = (value.content).split(",");
//console.log(value.id);
//下拉框
var option='';
$.each( content, function(k, v)
{
if( value.type=='select' ){
option+="<option value=' "+v+" ' >"+v+"</option>"
}
});
var checkedstrat='<ul class="Father_Title"><li>'+value.name+'</li></ul> <ul class="Father_Item'+index+'">';
var checked_end='</ul><br/><br/><br/><br/>';
var check='';
$.each( content, function(k, v)
{
if( value.type=='checkbox' ){
// console.log(value.name);
check+=' <li class="li_width"><label><input id="Checkbox'+value.id+k+'" type="checkbox" class="chcBox_Width" value="'+v+'" />'+v+'<span class="li_empty" ></span></label></li> ';
}
});
//下拉框结束
if( value.type == 'select' ){
var str="<div class='text_info clearfix afters'><span>"+value.name+"</span></div><div class='input_info afters'> <select name='attrbute_id["+value.id+"]' >"+ option +"</select> <span class='required'></span><div class='validate_msg_tiny'>至少选择一个</div></div> ";
$('#as').after(str);
}else if(value.type == 'text'){
var str="<div class='text_info clearfix afters'><span>"+value.name+"</span></div><div class='input_info afters'> <input type='text' name='attrbute_id["+value.id+"]' /> <span class='required'></span><div class='validate_msg_tiny'>至少选择一个类型</div></div> ";
$('#as').after(str);
}else if(value.type == 'date'){
var str="<div class='text_info clearfix afters'><span>"+value.name+"</span></div><div class='input_info afters'> <input type='date' name='attrbute_id["+value.id+"]' /> <span class='required'></span><div class='validate_msg_tiny'>请填写</div></div> ";
$('#as').after(str);
attr('date');
}else if(value.type == 'checkbox'){
var str=checkedstrat+check+checked_end;
$('.div_contentlist').append(str);
attr('checkbox');
$(".div_contentlist label").bind("change", function () {
step.Creat_Table();
});
var step = {
//SKU信息组合
Creat_Table: function () {
step.hebingFunction();
var SKUObj = $(".Father_Title");
//var skuCount = SKUObj.length;//
var arrayTile = new Array();//标题组数
var arrayInfor = new Array();//盛放每组选中的CheckBox值的对象
var arrayColumn = new Array();//指定列,用来合并哪些列
var bCheck = true;//是否全选
var columnIndex = 0;
$.each(SKUObj, function (i, item){
arrayColumn.push(columnIndex);
columnIndex++;
arrayTile.push(SKUObj.find("li").eq(i).html().replace("", ""));
var itemName = "Father_Item" + i;
//选中的CHeckBox取值
var order = new Array();
$("." + itemName + " input[type=checkbox]:checked").each(function (){
order.push($(this).val());
});
arrayInfor.push(order);
if (order.join() == ""){
bCheck = false;
}
//var skuValue = SKUObj.find("li").eq(index).html();
});
//开始创建Table表
if (bCheck == true) {
var RowsCount = 0;
$("#createTable").html("");
var table = $("<table id=\"process\" border=\"1\" cellpadding=\"1\" cellspacing=\"0\" style=\"width:100%;padding:5px;\"></table>");
table.appendTo($("#createTable"));
var thead = $("<thead></thead>");
thead.appendTo(table);
var trHead = $("<tr></tr>");
trHead.appendTo(thead);
//创建表头
$.each(arrayTile, function (index, item) {
var td = $("<th>" + item + "</th>");
td.appendTo(trHead);
});
// var itemColumHead = $("<th style=\"width:70px;\">价格</th><th style=\"width:70px;\">库存</th> ");
var itemColumHead = $("<th style=\"width:70px;\">价格</th><th style=\"width:70px;\">库存</th> ");
itemColumHead.appendTo(trHead);
// var itemColumHead2 = $("<td >商家编码</td><td >商品条形码</td>");
// itemColumHead2.appendTo(trHead);
var tbody = $("<tbody></tbody>");
tbody.appendTo(table);
////生成组合
var zuheDate = step.doExchange(arrayInfor);
if (zuheDate.length > 0) {
//创建行
$.each(zuheDate, function (index, item) {
var td_array = item.split(",");
var tr = $("<tr></tr>");
tr.appendTo(tbody);
$.each(td_array, function (i, values) {
var td = $("<td>" + values + "</td>");
td.appendTo(tr);
// console.log( values );
});
// console.log(item);
var td1 = $("<td > <input name=\"spec_item[]\" class=\"l-text\" type=\"hidden\" value=\""+item+" \" > <input name=\"price[]\" class=\"l-text\" type=\"text\" value=\"\" ></td>" );
td1.appendTo(tr);
var td2 = $("<td > <input name=\"count[]\" class=\"l-text\" type=\"text\" value=\"\"></td>");
td2.appendTo(tr);
//var td3 = $("<td ><input name=\"Txt_NumberSon\" class=\"l-text\" type=\"text\" value=\"\"></td>");
//td3.appendTo(tr);
//var td4 = $("<td ><input name=\"Txt_SnSon\" class=\"l-text\" type=\"text\" value=\"\"></td>");
//td4.appendTo(tr);
});
}
//结束创建Table表
arrayColumn.pop();//删除数组中最后一项
//合并单元格
$(table).mergeCell({
// 目前只有cols这么一个配置项, 用数组表示列的索引,从0开始
cols: arrayColumn
});
} else{
//未全选中,清除表格
document.getElementById('createTable').innerHTML="";
}
},//合并行
hebingFunction: function () {
$.fn.mergeCell = function (options) {
return this.each(function () {
var cols = options.cols;
for (var i = cols.length - 1; cols[i] != undefined; i--) {
// fixbug console调试
// console.debug(cols[i]);
mergeCell($(this), cols[i]);
}
dispose($(this));
});
};
function mergeCell($table, colIndex) {
$table.data('col-content', ''); // 存放单元格内容
$table.data('col-rowspan', 1); // 存放计算的rowspan值 默认为1
$table.data('col-td', $()); // 存放发现的第一个与前一行比较结果不同td(jQuery封装过的), 默认一个"空"的jquery对象
$table.data('trNum', $('tbody tr', $table).length); // 要处理表格的总行数, 用于最后一行做特殊处理时进行判断之用
// 进行"扫面"处理 关键是定位col-td, 和其对应的rowspan
$('tbody tr', $table).each(function (index) {
// td:eq中的colIndex即列索引
var $td = $('td:eq(' + colIndex + ')', this);
// 取出单元格的当前内容
var currentContent = $td.html();
// 第一次时走此分支
if ($table.data('col-content') == '') {
$table.data('col-content', currentContent);
$table.data('col-td', $td);
} else {
// 上一行与当前行内容相同
if ($table.data('col-content') == currentContent) {
// 上一行与当前行内容相同则col-rowspan累加, 保存新值
var rowspan = $table.data('col-rowspan') + 1;
$table.data('col-rowspan', rowspan);
// 值得注意的是 如果用了$td.remove()就会对其他列的处理造成影响
$td.hide();
// 最后一行的情况比较特殊一点
// 比如最后2行 td中的内容是一样的, 那么到最后一行就应该把此时的col-td里保存的td设置rowspan
if (++index == $table.data('trNum'))
$table.data('col-td').attr('rowspan', $table.data('col-rowspan'));
} else { // 上一行与当前行内容不同
// col-rowspan默认为1, 如果统计出的col-rowspan没有变化, 不处理
if ($table.data('col-rowspan') != 1) {
$table.data('col-td').attr('rowspan', $table.data('col-rowspan'));
}
// 保存第一次出现不同内容的td, 和其内容, 重置col-rowspan
$table.data('col-td', $td);
$table.data('col-content', $td.html());
$table.data('col-rowspan', 1);
}
}
});
}
// 同样是个private函数 清理内存之用
function dispose($table) {
$table.removeData();
}
},
//组合数组
doExchange: function (doubleArrays) {
var len = doubleArrays.length;
if (len >= 2) {
var arr1 = doubleArrays[0];
var arr2 = doubleArrays[1];
var len1 = doubleArrays[0].length;
var len2 = doubleArrays[1].length;
var newlen = len1 * len2;
var temp = new Array(newlen);
var index = 0;
for (var i = 0; i < len1; i++) {
for (var j = 0; j < len2; j++) {
temp[index] = arr1[i] + "," + arr2[j];
index++;
}
}
var newArray = new Array(len - 1);
newArray[0] = temp;
if (len > 2) {
var _count = 1;
for (var i = 2; i < len; i++) {
newArray[_count] = doubleArrays[i];
_count++;
}
}
//console.log(newArray);
return step.doExchange(newArray);
}
else {
return doubleArrays[0];
}
}
}
return step;
/*******************************************************************/
}
});
});
// layer.msg(isa);
}
</script>
<php>
//多选框选中状态
$attrbute_id=explode(",",$info['attrbute_id']);
$attrbute_value=explode(":",$info['attrbute_value']);
$attrbute_value= array_unique( $attrbute_value );
echo "<script type='text/javascript'> function attr(obj){ if(obj=='checkbox'){ ";
echo "\$(\"input\").each(function(){ \r\n";
foreach($attrbute_value as $k=>$v){
printf(" if( \$(this).val()=='%s' ) { $(this).prop(\"checked\",true); } \r\n",trim($attrbute_value[$k]) );
}
echo"}); \r\n";
echo " }else{ ";
foreach($attrbute_value as $k=>$v){
printf(" \$(\".get_contents_%u\").val(\"%s\"); ",trim($v),trim($attrbute_value[$k]) );
}
echo " } }</script>";
</php>

View file

@ -0,0 +1,467 @@
<layout name="Public/layout"/>
{:jumps($infos['authority'],CONTROLLER_NAME)}
<!--主要区域开始-->
<div id="main">
<form action="__SELF__" method="post" class="main_form">
<input type="hidden" name="id" value='{$info.id}' />
<div class="text_info clearfix"><span>编号:</span></div>
<div class="input_info">
<input type="text" class="width200" name='sn' value='{$info.sn}'/>
<span class="required">*</span>
<div class="validate_msg_medium">不能为空且为20长度的字母、数字和汉字的组合</div>
</div>
<div class="text_info clearfix"><span>商品名称:</span></div>
<div class="input_info">
<input type="text" class="width200" name='name' value='{$info.name}'/>
<span class="required">*</span>
<div class="validate_msg_medium">不能为空且为20长度的字母、数字和汉字的组合</div>
</div>
<input type="button" value="增加属性" class="btn_add" onclick="location.href='__MODULE__/Attribute/add';" />
<div class="text_info clearfix"><span>所属门店:</span></div>
<div class="input_info">
<select name="store_id">
<!--分类-->
<volist name="store" id="vo">
<option value="{$vo.id}"
<php>if($info['store_id']==$vo['id']){ echo 'selected'; }</php>
>{$vo.name}</option>
</volist>
</select>
<input type="button" value="增加" class="btn_add" onclick="location.href='{:U('Brand/add')}';" />
</div>
<div class="text_info clearfix"><span>商品品牌:</span></div>
<div class="input_info">
<select name="brand_id">
<!--品牌分类-->
<volist name="brand" id="vo">
<option value="{$vo.id}"
<php>if($info['brand_id']==$vo['id']){ echo 'selected'; }</php>
>{$vo.name}</option>
</volist>
</select>
<input type="button" value="增加" class="btn_add" onclick="location.href='{:U('Brand/add')}';" />
</div>
<div class="text_info clearfix"><span>商品类型:</span></div>
<div class="input_info" id="as">
<select name="category_id" id="category_id" onchange="get_attr(this)" >
<!--遍历类型-->
<volist name='category' id='vo'>
<option value="{$vo.id}"
<php>if($info['category_id']==$vo['id']){ echo 'selected'; }</php>
>{$vo.name}</option>
</volist>
</select>
<span class="required">
<input type="button" value="增加" class="btn_add" onclick="location.href='{:U('Category/add')}';" />
</span>
<div class="validate_msg_tiny">至少选择一个类型</div>
</div>
<div class="button_info clearfix">
{:W('Menu/goods')}
</div>
<div class="button_info clearfix">
<input type="button" value="保存" class="btn_save" onclick="send()" />
<input type="button" value="取消" class="btn_save" />
</div>
</form>
</div>
<!--主要区域结束-->
<style type="text/css">
.l-text{
width: 100px;
}
.li_width label input{
position: relative;
top:10px;
}
</style>
<script type="text/javascript">
$(function(){
//点击之后的图标
$('.buy_off').addClass('buy_on').removeClass('buy_off');
});
</script>
<script type="text/javascript">
function send(){
$.ajax({
url: '__SELF__',
type: 'post',
dataType:'json',
data: $(".main_form").serializeArray(),
success: function(data) {
// console.log(data);
//判断是否添加成功!
if(data.status==0){
layer.msg(data.info,{icon: 5});
}else{
layer.msg(data.info,{icon: 6});
//延迟跳转
setTimeout(function () {
location.href = "{:U('Goods/index')}";
}, {:C('AJAX_TIME')});
}
}
});
}
</script>
<script type="text/javascript">
$(function(){
$('#category_id').change();
});
function get_attr(obj){
var isa=jQuery("#category_id option:selected").val();
$('.afters').remove();
$('.div_contentlist').html('');
$.get('__CONTROLLER__/get_attr/id/'+isa, function(data){
// console.log(data);
//第一层遍历
$.each( data, function(index, value)
{
content = (value.content).split(",");
//console.log(value.id);
//下拉框
var option='';
$.each( content, function(k, v)
{
if( value.type=='select' ){
option+="<option value='"+v+"' >"+v+"</option>"
}
});
var checkedstrat='<ul class="Father_Title"><li>'+value.name+'</li></ul> <ul class="Father_Item'+index+'">';
var checked_end='</ul><br/><br/><br/><br/>';
var check='';
$.each( content, function(k, v)
{
if( value.type=='checkbox' ){
// console.log(value.name);
check+=' <li class="li_width"><label><input id="Checkbox'+value.id+k+'" type="checkbox" class="chcBox_Width" value="'+v+'" />'+v+'<span class="li_empty" ></span></label></li> ';
}
});
//下拉框结束
if( value.type == 'select' ){
var str="<div class='text_info clearfix afters'><span>"+value.name+"</span></div><div class='input_info afters'> <select name='attrbute_id["+value.id+"]' class='get_contents_"+value.id+" ' >"+ option +"</select> <span class='required'></span><div class='validate_msg_tiny'>至少选择一个</div></div> ";
$('#as').after(str);
attr('select');
}else if(value.type == 'text'){
var str="<div class='text_info clearfix afters'><span>"+value.name+"</span></div><div class='input_info afters'> <input type='text' name='attrbute_id["+value.id+"]' class='get_contents_"+value.id+" ' /> <span class='required'></span><div class='validate_msg_tiny'>至少选择一个类型</div></div> ";
$('#as').after(str);
attr('text');
}else if(value.type == 'date'){
var str="<div class='text_info clearfix afters'><span>"+value.name+"</span></div><div class='input_info afters'> <input type='date' name='attrbute_id["+value.id+"]' class='get_contents_"+value.id+" ' /> <span class='required'></span><div class='validate_msg_tiny'>请填写</div></div> ";
$('#as').after(str);
attr('date');
}else if(value.type == 'checkbox'){
var str=checkedstrat+check+checked_end;
$('.div_contentlist').append(str);
attr('checkbox');
$(".div_contentlist label").bind("change", function () {
step.Creat_Table();
});
var step = {
//SKU信息组合
Creat_Table: function () {
step.hebingFunction();
var SKUObj = $(".Father_Title");
//var skuCount = SKUObj.length;//
var arrayTile = new Array();//标题组数
var arrayInfor = new Array();//盛放每组选中的CheckBox值的对象
var arrayColumn = new Array();//指定列,用来合并哪些列
var bCheck = true;//是否全选
var columnIndex = 0;
$.each(SKUObj, function (i, item){
arrayColumn.push(columnIndex);
columnIndex++;
arrayTile.push(SKUObj.find("li").eq(i).html().replace("", ""));
var itemName = "Father_Item" + i;
//选中的CHeckBox取值
var order = new Array();
$("." + itemName + " input[type=checkbox]:checked").each(function (){
order.push($(this).val());
});
arrayInfor.push(order);
if (order.join() == ""){
bCheck = false;
}
//var skuValue = SKUObj.find("li").eq(index).html();
});
//开始创建Table表
if (bCheck == true) {
var RowsCount = 0;
$("#createTable").html("");
var table = $("<table id=\"process\" border=\"1\" cellpadding=\"1\" cellspacing=\"0\" style=\"width:100%;padding:5px;\"></table>");
table.appendTo($("#createTable"));
var thead = $("<thead></thead>");
thead.appendTo(table);
var trHead = $("<tr></tr>");
trHead.appendTo(thead);
//创建表头
$.each(arrayTile, function (index, item) {
var td = $("<th>" + item + "</th>");
td.appendTo(trHead);
});
// var itemColumHead = $("<th style=\"width:70px;\">价格</th><th style=\"width:70px;\">库存</th> ");
var itemColumHead = $("<th style=\"width:70px;\">价格</th><th style=\"width:70px;\">库存</th> ");
itemColumHead.appendTo(trHead);
// var itemColumHead2 = $("<td >商家编码</td><td >商品条形码</td>");
// itemColumHead2.appendTo(trHead);
var tbody = $("<tbody></tbody>");
tbody.appendTo(table);
////生成组合
var zuheDate = step.doExchange(arrayInfor);
if (zuheDate.length > 0) {
//创建行
$.each(zuheDate, function (index, item) {
var td_array = item.split(",");
var tr = $("<tr></tr>");
tr.appendTo(tbody);
$.each(td_array, function (i, values) {
var td = $("<td>" + values + "</td>");
td.appendTo(tr);
// console.log( values );
});
//把php字符串赋值给js,并js转为数组
var counts="{$info.count}";
counts = counts.split(',');
//把php字符串赋值给js,并js转为数组
var prices="{$info.prices}";
prices = prices.split(',');
// console.log(index);
var td1 = $("<td > <input name=\"spec_item[]\" class=\"l-text\" type=\"hidden\" value=\""+item+" \" > <input name=\"price[]\" class=\"l-text\" type=\"text\" value=\" "+prices[index]+" \" ></td>" );
td1.appendTo(tr);
var td2 = $("<td > <input name=\"count[]\" class=\"l-text\" type=\"text\" value=\" "+counts[index]+"\"></td>");
td2.appendTo(tr);
//var td3 = $("<td ><input name=\"Txt_NumberSon\" class=\"l-text\" type=\"text\" value=\"\"></td>");
//td3.appendTo(tr);
//var td4 = $("<td ><input name=\"Txt_SnSon\" class=\"l-text\" type=\"text\" value=\"\"></td>");
//td4.appendTo(tr);
});
}
//结束创建Table表
arrayColumn.pop();//删除数组中最后一项
//合并单元格
$(table).mergeCell({
// 目前只有cols这么一个配置项, 用数组表示列的索引,从0开始
cols: arrayColumn
});
} else{
//未全选中,清除表格
document.getElementById('createTable').innerHTML="";
}
},//合并行
hebingFunction: function () {
$.fn.mergeCell = function (options) {
return this.each(function () {
var cols = options.cols;
for (var i = cols.length - 1; cols[i] != undefined; i--) {
// fixbug console调试
// console.debug(cols[i]);
mergeCell($(this), cols[i]);
}
dispose($(this));
});
};
function mergeCell($table, colIndex) {
$table.data('col-content', ''); // 存放单元格内容
$table.data('col-rowspan', 1); // 存放计算的rowspan值 默认为1
$table.data('col-td', $()); // 存放发现的第一个与前一行比较结果不同td(jQuery封装过的), 默认一个"空"的jquery对象
$table.data('trNum', $('tbody tr', $table).length); // 要处理表格的总行数, 用于最后一行做特殊处理时进行判断之用
// 进行"扫面"处理 关键是定位col-td, 和其对应的rowspan
$('tbody tr', $table).each(function (index) {
// td:eq中的colIndex即列索引
var $td = $('td:eq(' + colIndex + ')', this);
// 取出单元格的当前内容
var currentContent = $td.html();
// 第一次时走此分支
if ($table.data('col-content') == '') {
$table.data('col-content', currentContent);
$table.data('col-td', $td);
} else {
// 上一行与当前行内容相同
if ($table.data('col-content') == currentContent) {
// 上一行与当前行内容相同则col-rowspan累加, 保存新值
var rowspan = $table.data('col-rowspan') + 1;
$table.data('col-rowspan', rowspan);
// 值得注意的是 如果用了$td.remove()就会对其他列的处理造成影响
$td.hide();
// 最后一行的情况比较特殊一点
// 比如最后2行 td中的内容是一样的, 那么到最后一行就应该把此时的col-td里保存的td设置rowspan
if (++index == $table.data('trNum'))
$table.data('col-td').attr('rowspan', $table.data('col-rowspan'));
} else { // 上一行与当前行内容不同
// col-rowspan默认为1, 如果统计出的col-rowspan没有变化, 不处理
if ($table.data('col-rowspan') != 1) {
$table.data('col-td').attr('rowspan', $table.data('col-rowspan'));
}
// 保存第一次出现不同内容的td, 和其内容, 重置col-rowspan
$table.data('col-td', $td);
$table.data('col-content', $td.html());
$table.data('col-rowspan', 1);
}
}
});
}
// 同样是个private函数 清理内存之用
function dispose($table) {
$table.removeData();
}
},
//组合数组
doExchange: function (doubleArrays) {
var len = doubleArrays.length;
if (len >= 2) {
var arr1 = doubleArrays[0];
var arr2 = doubleArrays[1];
var len1 = doubleArrays[0].length;
var len2 = doubleArrays[1].length;
var newlen = len1 * len2;
var temp = new Array(newlen);
var index = 0;
for (var i = 0; i < len1; i++) {
for (var j = 0; j < len2; j++) {
temp[index] = arr1[i] + "," + arr2[j];
index++;
}
}
var newArray = new Array(len - 1);
newArray[0] = temp;
if (len > 2) {
var _count = 1;
for (var i = 2; i < len; i++) {
newArray[_count] = doubleArrays[i];
_count++;
}
}
//console.log(newArray);
return step.doExchange(newArray);
}
else {
return doubleArrays[0];
}
}
}
return step;
/*******************************************************************/
}
});
});
// layer.msg(isa);
}
</script>
<script type="text/javascript">
$(function(){
//延迟加载属性
setTimeout(function () {
$(".div_contentlist label").change();
}, 100);
});
</script>
<php>
//多选框选中状态
//$attrbute_id=explode(",",$info['attrbute_id']);
$attrbute_value=explode(":",$info['attrbute_value']);
$attrbute_value=array_filter( array_unique( $attrbute_value )) ;
$attrbute_id= array_values( array_filter( explode(",",$info['attrbute_id']) ) );
$attrbute_val= explode(",",$info['val']) ;
$arr=array();
foreach($attrbute_value as $v){
$arr[]=explode(",",$v);
}
foreach($arr as $v){
foreach($v as $val){
$arrs.=$val.',';
}
}
$attrbute_value=array_values( array_filter( explode(",",$arrs) ) );
echo "<script type='text/javascript'> function attr(obj){ if(obj=='checkbox'){ \r\n ";
echo "\$(\"input\").each(function(){ \r\n";
foreach($attrbute_value as $k=>$v){
printf(" if( \$(this).val()=='%s' ) { $(this).prop(\"checked\",true); } \r\n",trim($attrbute_value[$k]) );
}
echo"}); \r\n";
echo " }else if(obj=='select'){ \r\n";
foreach($attrbute_id as $k=>$v){
printf(" \$(\".get_content_%u option[value='%s'] \").prop(\"selected\",true); \r\n",trim($v),trim($attrbute_val[$k]) );
}
echo " }else{ \r\n ";
foreach($attrbute_id as $k=>$v){
printf(" \$(\".get_contents_%u\").val(\"%s\"); \r\n",trim($v),trim($attrbute_val[$k]) );
}
echo " } }</script>";
</php>
<script type="text/javascript">
$(function(){
setTimeout(function () {
$(".l-text [name='price[]']").val('123') ;
}, 1000);
});
</script>

View file

@ -0,0 +1,269 @@
<layout name="Public/layout"/>
{:jumps($infos['authority'],CONTROLLER_NAME)}
<!--主要区域开始-->
<div id="main">
<form action="__SELF__" method="get" id="search">
<!--查询-->
<div class="search_add">
<div>货号:<input type="text" class="text_search width130" value="{:I('get.sn')}" name='sn'/></div>
<div>名称:<input type="text" class="width110 text_search" value="{:I('get.name')}" name='name'/></div>
<div>
排序:
<select class="select_search" name='order'>
<option value="id asc">默认</option>
<option value="price asc" <php> if( I('get.order')=='price asc' ){ echo 'selected';} </php> > ↑ 价格从低到高 </option>
<option value="price desc" <php> if( I('get.order')=='price desc' ){ echo 'selected';} </php> > ↓ 价格从高到低 </option>
<option value="count asc" <php> if( I('get.order')=='count asc' ){ echo 'selected';} </php> > ↑ 库存从低到高 </option>
<option value="count desc" <php> if( I('get.order')=='count desc' ){ echo 'selected';} </php> > ↓ 库存从高到低 </option>
<option value="time asc" <php> if( I('get.order')=='time asc' ){ echo 'selected';} </php> > ↑ 日期从低到高 </option>
<option value="time desc" <php> if( I('get.order')=='time desc' ){ echo 'selected';} </php> > ↓ 日期从高到低 </option>
</select>
</div>
<div>
品牌:
<select class="select_search" name='brand' id='status'>
<option value="">全部</option>
<!--遍历品牌-->
<volist name="brand" id="vo">
<option value="{$vo.id}" <php> if( I('get.brand')==$vo['id'] ){ echo 'selected';} </php> >{$vo.name}</option>
</volist>
</select>
</div>
<div>
类型:
<select class="select_search" name='category'>
<option value="">全部</option>
<!--遍历类型-->
<volist name="category" id="vo">
<option value="{$vo.id}" <php> if( I('get.category')==$vo['id'] ){ echo 'selected';} </php> >{$vo.name}</option>
</volist>
</select>
</div>
<input type="button" value="增加" class="btn_add" onclick="location.href='__CONTROLLER__/add';" />
<div style='margin:5px 0;display:block; '>
<div>
价格:<input type="text" class="width70 text_search" value="{:I('get.start_price')}" name='start_price'/>
-
<input type="text" class="width70 text_search" value="{:I('get.end_price')}" name='end_price'/>
</div>
<div>
库存:<input type="text" class="width70 text_search" value="{:I('get.start_stock')}" name='start_stock'/>
-
<input type="text" class="width70 text_search" value="{:I('get.end_stock')}" name='end_stock'/>
</div>
<div>
日期:<input type="date" class="width130 text_search" value="{:I('get.start_time')}" name='start_time'/>
-
<input type="date" class="width130 text_search" value="{:I('get.end_time')}" name='end_time'/>
</div>
</div>
</div>
<!--搜索开始-->
<div>
<input type="button" value="搜索" class="btn_search" id="btn_search" onclick="search()"/>
<button onclick="preview('data');" id="print">打印</button>
</div>
<!--搜索结束-->
</form>
<!--数据区域:用表格展示数据-->
<div id="data">
<table id="datalist">
<tr>
<th>商品ID</th>
<th>货号</th>
<th>名称</th>
<th>品牌</th>
<th>分类</th>
<th>总库存</th>
<th>单价</th>
<th>创建日期</th>
<th>操作</th>
</tr>
<!--开始遍历数据-->
<volist name="res['res']" id="vo" empty="$empty">
<tr>
<td>{$vo.id}</td>
<td>{$vo.sn}</td>
<td><a href="__CONTROLLER__/detail/id/{$vo.id}">{$vo.name}</a></td>
<td>{$vo.brand_name}</td>
<td>{$vo.category_name}</td>
<td>{:array_sum( explode(',',$vo['count']) ); }</td>
<td>{$vo.price}</td>
<td>{:date('Y-m-d H:i:s',$vo['time'])}</td>
<td class="td_modi">
<input type="button" value="修改" class="btn_modify" onclick=" location.href='__CONTROLLER__/edit/id/{$vo.id}'; " />
<input type="button" value="删除" class="btn_delete" onclick=" deletes( '__CONTROLLER__/delete/id/{$vo.id}' ); " />
</td>
</tr>
</volist>
<!--遍历结束-->
</table>
<p>操作说明:<br />
1、创建则开通记载创建时间<br />
2、禁止后则无法登陆<br />
3、重新开通后则可以正常使用<br />
4、删除后标示为删除不能再开通、修改、删除<br />
</div>
<!--分页-->
<div id="pages">
{$res['page']}
</div>
</div>
<!--主要区域结束-->
<script type="text/javascript">
function search(){
layer.load(2); //加载
setTimeout(function(){
$('#search').submit();
},{:C('SEARCH_TIME')});
}
$(function(){
$('#status').change(function(){
$('#search').submit();
});
$('select').change(function(){
$('#search').submit();
});
});
//键盘事件
$(document).keydown(function(event){
if(event.keyCode == 13){
// alert(event.keyCode);
search();
}
});
//禁止 开通
function set_status(obj){
layer.confirm('你确定真的要修改用户状态吗?', {icon: 0, title:'提示'}, function(index){
if(index){
$.ajax({
type: "GET",
url: obj,
success: function(data){
//判断修改加成功!
if(data.status==0){
layer.msg(data.info,{icon: 5});
}else{
layer.msg(data.info,{icon: 6});
//延迟跳转
setTimeout(function () {
location.href = "{:U('Account/index')}";
}, {:C('AJAX_TIME')});
}
}
});
// layer.msg(obj);
}
layer.close(index);
});
}
//删除
function deletes(obj){
layer.confirm('你确定真的要删除此商品?', {icon: 3, title:'提示'}, function(index){
if(index){
$.get(obj, function(data){
//判断是否删除成功!
if(data.status==0){
layer.msg(data.info,{icon: 5});
}else{
layer.msg(data.info,{icon: 6});
//延迟跳转
setTimeout(function () {
location.href = "{:U('Goods/index')}";
}, {:C('AJAX_TIME')});
}
});
}
layer.close(index);
});
}
</script>
<style type="text/css">
.empty{
font-weight:bold;
}
</style>
<script type="text/javascript">
$(function(){
//点击之后的图标
$('.warehouse_off').addClass('warehouse_on').removeClass('warehouse_off');
});
</script>
<style type="text/css">
#print{
width:50px;
height:24px;
}
</style>
<script type="text/javascript">
function preview(id){
var sprnhtml=$('#'+id).html(); //获取区域内容
var selfhtml=$('body').html(); //获取当前页的html
$('body').html(sprnhtml);
window.print();
$('body').html(selfhtml);
}
</script>

View file

@ -0,0 +1,12 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>WMS-仓储管理系统</title>
<link type="text/css" rel="stylesheet" media="all" href="__PUBLIC__/styles/global.css" />
<link type="text/css" rel="stylesheet" media="all" href="__PUBLIC__/styles/global_color.css" />
</head>
<body class="index">
{:W('Menu/Menu')}
</body>
</html>

View file

@ -0,0 +1,69 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>WMS-仓储管理系统</title>
<link type="text/css" rel="stylesheet" media="all" href="__PUBLIC__/styles/global.css" />
<link type="text/css" rel="stylesheet" media="all" href="__PUBLIC__/styles/global_color.css" />
<script src="__PUBLIC__/js/jquery-1.9.1.min.js"></script>
</head>
<body class="index">
<div class="login_box">
<form action="__CONTROLLER__/user_login" method="post" id="login">
<!-- <a href="__CONTROLLER__/index">管理员登陆</a> -->
<table>
<tr>
<td class="login_info">账号:</td>
<td colspan="2"><input name="username" type="text" class="width150" /></td>
<!-- <td class="login_error_info"><span class="required">30长度的字母、数字和下划线</span></td>-->
</tr>
<tr>
<td class="login_info">密码:</td>
<td colspan="2"><input name="password" type="password" class="width150" /></td>
<!-- <td><span class="required">30长度的字母、数字和下划线</span></td>-->
</tr>
<tr>
<td class="login_info">验证码:</td>
<td class="width70"><input name="code" type="text" class="width70" /></td>
<td><img src="__CONTROLLER__/code" alt="验证码" title="点击更换" id="code" onclick=""/></td>
<!-- <td><span class="required">验证码错误</span></td> -->
</tr>
<tr>
<td></td>
<td class="login_button" colspan="2">
<input type="submit" value="" />
</td>
<!-- <td><span class="required">用户名或密码错误,请重试</span></td> -->
</tr>
</table>
</form>
</div>
</body>
</html>
<style type="text/css">
input[type='submit']{
background:url('__PUBLIC__/images/login_btn.png');
width: 124px;
height:41px;
border:none;
}
#code{
width: 70px;
height:30px;
}
</style>
<script type="text/javascript">
// 验证码
$( function(){
var checkVerify="__CONTROLLER__/code";
//点击图片切换验证码
$('#code').click(function(){
var verifyurl=$(this).attr('src');
//alert(verifyurl);
$(this).attr('src',verifyurl+'/'+Math.random());
});
} );
</script>

View file

@ -0,0 +1,69 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>WMS-仓储管理系统</title>
<link type="text/css" rel="stylesheet" media="all" href="__PUBLIC__/styles/global.css" />
<link type="text/css" rel="stylesheet" media="all" href="__PUBLIC__/styles/global_color.css" />
<script src="__PUBLIC__/js/jquery-1.9.1.min.js"></script>
</head>
<body class="index">
<div class="login_box">
<form action="__CONTROLLER__/login" method="post" id="login">
<!-- <a href="__CONTROLLER__/admin">普通用户登陆</a> -->
<table>
<tr>
<td class="login_info">账号:</td>
<td colspan="2"><input name="username" type="text" class="width150" /></td>
<!-- <td class="login_error_info"><span class="required">30长度的字母、数字和下划线</span></td>-->
</tr>
<tr>
<td class="login_info">密码:</td>
<td colspan="2"><input name="password" type="password" class="width150" /></td>
<!-- <td><span class="required">30长度的字母、数字和下划线</span></td>-->
</tr>
<tr>
<td class="login_info">验证码:</td>
<td class="width70"><input name="code" type="text" class="width70" /></td>
<td><img src="__CONTROLLER__/code" alt="验证码" title="点击更换" id="code" onclick=""/></td>
<!-- <td><span class="required">验证码错误</span></td> -->
</tr>
<tr>
<td></td>
<td class="login_button" colspan="2">
<input type="submit" value="" />
</td>
<!-- <td><span class="required">用户名或密码错误,请重试</span></td> -->
</tr>
</table>
</form>
</div>
</body>
</html>
<style type="text/css">
input[type='submit']{
background:url('__PUBLIC__/images/login_btn.png');
width: 124px;
height:41px;
border:none;
}
#code{
width: 70px;
height:30px;
}
</style>
<script type="text/javascript">
// 验证码
$( function(){
var checkVerify="__CONTROLLER__/code";
//点击图片切换验证码
$('#code').click(function(){
var verifyurl=$(this).attr('src');
//alert(verifyurl);
$(this).attr('src',verifyurl+'/'+Math.random());
});
} );
</script>

View file

@ -0,0 +1,59 @@
<layout name="Public/layout"/>
{:jumps($infos['authority'],CONTROLLER_NAME)}
<!--主要区域开始-->
<div id="main">
<form action="__SELF__" method="post" class="main_form">
<div class="text_info clearfix"><span>职位名称:</span></div>
<div class="input_info">
<input type="text" class="width200" name="name"/>
<span class="required">*</span>
<div class="validate_msg_medium">不能为空且为20长度的字母、数字和汉字的组合</div>
</div>
<div class="button_info clearfix">
<input type="button" value="保存" class="btn_save" onclick="send()" />
<input type="button" value="取消" class="btn_save" />
</div>
</form>
</div>
<!--主要区域结束-->
<script type="text/javascript">
function send(){
$.ajax({
url: '__SELF__',
type: 'post',
dataType:'json',
data: $(".main_form").serializeArray(),
success: function(data) {
//判断是否添加成功!
if(data.status==0){
layer.msg(data.info,{icon: 5});
}else{
layer.msg(data.info,{icon: 6});
//延迟跳转
setTimeout(function () {
location.href = "{:U('Position/index')}";
}, {:C('AJAX_TIME')});
}
}
});
}
</script>
<script type="text/javascript">
$(function(){
//点击之后的图标
$('.service_off').addClass('service_on').removeClass('service_off');
});
</script>

View file

@ -0,0 +1,60 @@
<layout name="Public/layout"/>
{:jumps($infos['authority'],CONTROLLER_NAME)}
<!--主要区域开始-->
<div id="main">
<form action="__SELF__" method="post" class="main_form">
<input type="hidden" name="id" value="{$info.id}"/>
<div class="text_info clearfix"><span>职位名称:</span></div>
<div class="input_info">
<input type="text" class="width200" name="name" value="{$info.name}"/>
<span class="required">*</span>
<div class="validate_msg_medium">不能为空且为20长度的字母、数字和汉字的组合</div>
</div>
<div class="button_info clearfix">
<input type="button" value="保存" class="btn_save" onclick="send()" />
<input type="button" value="取消" class="btn_save" />
</div>
</form>
</div>
<!--主要区域结束-->
<script type="text/javascript">
function send(){
$.ajax({
url: '__SELF__',
type: 'post',
dataType:'json',
data: $(".main_form").serializeArray(),
success: function(data) {
//判断是否添加成功!
if(data.status==0){
layer.msg(data.info,{icon: 5});
}else{
layer.msg(data.info,{icon: 6});
//延迟跳转
setTimeout(function () {
location.href = "{:U('Position/index')}";
}, {:C('AJAX_TIME')});
}
}
});
}
</script>
<script type="text/javascript">
$(function(){
//点击之后的图标
$('.service_off').addClass('service_on').removeClass('service_off');
});
</script>

View file

@ -0,0 +1,87 @@
<layout name="Public/layout"/>
{:jumps($infos['authority'],CONTROLLER_NAME)}
<!--主要区域开始-->
<div id="main">
<form action="" method="">
<!--查询-->
<div class="search_add">
<input type="button" value="增加" class="btn_add" onclick="location.href='__CONTROLLER__/add';" />
</div>
<!--数据区域:用表格展示数据-->
<div id="data">
<table id="datalist">
<tr>
<th>职位 ID</th>
<th>职位名称</th>
<th>创建时间</th>
<th class="td_modi"></th>
</tr>
<volist name="res['res']" id='vo'>
<tr>
<td>{$vo.id}</td>
<td>{$vo.name}</td>
<td>{:date('Y-m-d H:i:s',$vo['time']) }</td>
<td>
<input type="button" value="修改" class="btn_modify" onclick="location.href='__CONTROLLER__/edit/id/{$vo.id}';"/>
<input type="button" value="删除" class="btn_delete" onclick="deletes('__CONTROLLER__/delete/id/{$vo.id}');" />
</td>
</tr>
</volist>
</table>
</div>
<!--分页-->
<div id="pages">
{$res['page']}
</div>
</form>
</div>
<!--主要区域结束-->
<script type="text/javascript">
//删除
function deletes(obj){
layer.confirm('你确定真的要删除此职位?', {icon: 3, title:'提示'}, function(index){
if(index){
$.get(obj, function(data){
//判断是否删除成功!
if(data.status==0){
layer.msg(data.info,{icon: 5});
}else{
layer.msg(data.info,{icon: 6});
//延迟跳转
setTimeout(function () {
location.href = "{:U('Position/index')}";
}, {:C('AJAX_TIME')});
}
});
}
layer.close(index);
});
}
</script>
<style type="text/css">
.empty{
font-weight:bold;
}
</style>
<script type="text/javascript">
$(function(){
//点击之后的图标
$('.service_off').addClass('service_on').removeClass('service_off');
});
</script>

View file

@ -0,0 +1,86 @@
<layout name="Public/layout"/>
{:jumps($infos['authority'],CONTROLLER_NAME)}
<!--主要区域开始-->
<div id="main">
<form action="__SELF__" method="post" class="main_form">
<div class="text_info clearfix"><span>权限名称:</span></div>
<div class="input_info">
<input type="text" class="width200" name='name'/>
<span class="required">*</span>
<div class="validate_msg_medium">不能为空且为20长度的字母、数字和汉字的组合</div>
</div>
<div class="text_info clearfix"><span>控制器:</span></div>
<div class="input_info">
<input type="text" class="width200" name='controller'/>
<span class="required">*</span>
<div class="validate_msg_medium">不能为空20长度以内的字母、数字和下划线的组合</div>
</div>
<div class="text_info clearfix"><span>模型:</span></div>
<div class="input_info">
<input type="text" class="width200" name='module'/>
<span class="required">*</span>
<div class="validate_msg_medium">不能为空20长度以内的字母、数字和下划线的组合</div>
</div>
<div class="text_info clearfix"><span>方法:</span></div>
<div class="input_info_high">
<div class="input_info_scroll">
<ul>
<li><input type="checkbox" name='action[]' value='index'/>查看权限</li>
<li><input type="checkbox" name='action[]' value='add'/>添加权限</li>
<li><input type="checkbox" name='action[]' value='edit'/>修改权限</li>
<li><input type="checkbox" name='action[]' value='delete'/>删除权限</li>
</ul>
</div>
<span class="required">*</span>
<div class="validate_msg_tiny">至少选择一个权限</div>
</div>
<div class="button_info clearfix">
<input type="button" value="保存" class="btn_save" onclick="send()" />
<input type="button" value="取消" class="btn_save" />
</div>
</form>
</div>
<!--主要区域结束-->
<script type="text/javascript">
$(function(){
//点击之后的图标
$('.role_off').addClass('role_on').removeClass('role_off');
});
</script>
<script type="text/javascript">
//ajax提交
function send(){
$.ajax({
url: '__SELF__',
type: 'post',
dataType:'json',
data: $(".main_form").serializeArray(),
success: function(data) {
// console.log(data);
//判断是否修改成功!
if(data.status==0){
layer.msg(data.info,{icon: 5});
}else{
layer.msg(data.info,{icon: 6});
//延迟跳转
setTimeout(function () {
location.href = "{:U('Privilege/index')}";
}, {:C('AJAX_TIME')});
}
}
});
}
</script>

View file

@ -0,0 +1,122 @@
<layout name="Public/layout"/>
{:jumps($infos['authority'],CONTROLLER_NAME)}
<!--主要区域开始-->
<div id="main">
<form action="__SELF__" method="post" class="main_form">
<div class="text_info clearfix"><span>权限ID</span></div>
<div class="input_info">
<input type="text" class="width200" value='{$res.id}' disabled/>
<input type="hidden" class="width200" name='id' value='{$res.id}'/>
<span class="required">*</span>
<div class="validate_msg_medium">权限ID且不能更改</div>
</div>
<div class="text_info clearfix"><span>权限名称:</span></div>
<div class="input_info">
<input type="text" class="width200" name='name' value='{$res.name}'/>
<span class="required">*</span>
<div class="validate_msg_medium">不能为空且为20长度的字母、数字和汉字的组合</div>
</div>
<div class="text_info clearfix"><span>控制器:</span></div>
<div class="input_info">
<input type="text" class="width200" name='controller' value='{$res.controller}'/>
<span class="required">*</span>
<div class="validate_msg_medium">不能为空20长度以内的字母、数字和下划线的组合</div>
</div>
<div class="text_info clearfix"><span>模型:</span></div>
<div class="input_info">
<input type="text" class="width200" name='module' value='{$res.module}'/>
<span class="required">*</span>
<div class="validate_msg_medium">不能为空20长度以内的字母、数字和下划线的组合</div>
</div>
<div class="text_info clearfix"><span>方法:</span></div>
<div class="input_info_high">
<div class="input_info_scroll">
<ul>
<li><input type="checkbox" name='action[]' value='index'
<php>
if( strstr( $res['action'],'index' ) ){
echo 'checked';
}
</php>
/>查看权限</li>
<li><input type="checkbox" name='action[]' value='add'
<php>
if( strstr( $res['action'],'add' ) ){
echo 'checked';
}
</php>
/>添加权限</li>
<li><input type="checkbox" name='action[]' value='edit'
<php>
if( strstr( $res['action'],'edit' ) ){
echo 'checked';
}
</php>
/>修改权限</li>
<li><input type="checkbox" name='action[]' value='delete'
<php>
if( strstr( $res['action'],'delete' ) ){
echo 'checked';
}
</php>
/>删除权限</li>
</ul>
</div>
<span class="required">*</span>
<div class="validate_msg_tiny">至少选择一个权限</div>
</div>
<div class="button_info clearfix">
<input type="button" value="保存" class="btn_save" onclick="send()" />
<input type="button" value="取消" class="btn_save" />
</div>
</form>
</div>
<!--主要区域结束-->
<script type="text/javascript">
$(function(){
//点击之后的图标
$('.role_off').addClass('role_on').removeClass('role_off');
});
</script>
<script type="text/javascript">
//ajax提交
function send(){
$.ajax({
url: '__SELF__',
type: 'post',
dataType:'json',
data: $(".main_form").serializeArray(),
success: function(data) {
// console.log(data);
//判断是否修改成功!
if(data.status==0){
layer.msg(data.info,{icon: 5});
}else{
layer.msg(data.info,{icon: 6});
//延迟跳转
setTimeout(function () {
location.href = "{:U('Privilege/index')}";
}, {:C('AJAX_TIME')});
}
}
});
}
</script>

View file

@ -0,0 +1,105 @@
<layout name="Public/layout"/>
{:jumps($infos['authority'],CONTROLLER_NAME)}
<script language="javascript" type="text/javascript">
function deleteRole() {
var r = window.confirm("确定要删除此角色吗?");
document.getElementById("operate_result_info").style.display = "block";
}
</script>
<!--主要区域开始-->
<div id="main">
<form action="" method="">
<!--查询-->
<div class="search_add">
<input type="button" value="增加" class="btn_add" onclick="location.href='{:U('Privilege/add')}';" />
</div>
<!--数据区域:用表格展示数据-->
<div id="data">
<table id="datalist">
<tr>
<th>权限 ID</th>
<th>权限名称</th>
<th>控制器</th>
<th>模块</th>
<th>方法</th>
<th class="td_modi"></th>
</tr>
<!--遍历数据 start-->
<volist name="res['res']" id='vo' key='k'>
<tr>
<td>{$vo.id}</td>
<td>{$vo.name}</td>
<td>{$vo.controller}</td>
<td>{$vo.module}</td>
<td>{$vo.action}</td>
<if condition="$vo['id'] eq 1">
<td> --- </td>
<else />
<td>
<input type="button" value="修改" class="btn_modify" onclick="location.href='__CONTROLLER__/edit/id/{$vo.id}';"/>
<input type="button" value="删除" class="btn_delete" onclick="deletes('__CONTROLLER__/delete/id/{$vo.id}');" />
</td>
</if>
</tr>
</volist>
<!--遍历数据 end-->
</table>
</div>
<!--分页-->
<div id="pages">
{$res['page']}
</div>
</form>
</div>
<!--主要区域结束-->
<script type="text/javascript">
//删除
function deletes(obj){
layer.confirm('你确定真的要删除此权限?', {icon: 3, title:'提示'}, function(index){
if(index){
$.get(obj, function(data){
//判断是否删除成功!
if(data.status==0){
layer.msg(data.info,{icon: 5});
}else{
layer.msg(data.info,{icon: 6});
//延迟跳转
setTimeout(function () {
location.href = "{:U('Privilege/index')}";
}, {:C('AJAX_TIME')});
}
});
}
layer.close(index);
});
}
</script>
<script type="text/javascript">
$(function(){
//点击之后的图标
$('.role_off').addClass('role_on').removeClass('role_off');
});
</script>
<style type="text/css">
.empty{
font-weight:bold;
}
</style>

View file

@ -0,0 +1,47 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>WMS-仓储管理系统</title>
<link type="text/css" rel="stylesheet" media="all" href="__PUBLIC__/styles/global.css" />
<link type="text/css" rel="stylesheet" media="all" href="__PUBLIC__/styles/global_color.css" />
<script src="__PUBLIC__/js/jquery-1.9.1.min.js"></script>
<script src="__PUBLIC__/layer/layer.js"></script>
<script src="__PUBLIC__/js/user.js"></script>
</head>
<body>
<!--Logo区域开始-->
<div id="header">
<img src="__PUBLIC__/images/logo.png" alt="logo" class="left"/>
<span style="font-weight:bold;">Hi!</span>
<span style="color:white;font-weight:bold;">{$infos.nickname}</span>
<a href="{:U('Login/loginout')}" >[退出]</a>
</div>
<!--Logo区域结束-->
<!--导航区域开始-->
<div id="navi">
<ul id="menu">
<li><a href="{:U('Index/index')}" class="index_off"></a></li>
<li><a href="{:U('Role/index')}" class="role_off"></a></li>
<li><a href="{:U('Admin/index')}" class="admin_off"></a></li>
<li><a href="{:U('Store/index')}" class="store_off"></a></li>
<li><a href="{:U('Account/index')}" class="emp_off"></a></li>
<li><a href="{:U('Buy/index')}" class="buy_off"></a></li>
<li><a href="{:U('Sell/index')}" class="sell_off"></a></li>
<li><a href="{:U('Goods/index')}" class="warehouse_off"></a></li>
<li><a href="{:U('User/info')}" class="information_off"></a></li>
<li><a href="{:U('User/pwd')}" class="password_off"></a></li>
</ul>
</div>
<!--导航区域结束-->
{__CONTENT__}
<div id="footer">
<p>[ 源自bool专注WMSTMSPOD的解决方案 ]</p>
<p>版权所有(C)bool设计 qq:30024167 </p>
</div>
</body>
</html>

View file

@ -0,0 +1,42 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>WMS-仓储管理系统</title>
<link type="text/css" rel="stylesheet" media="all" href="__PUBLIC__/styles/global.css" />
<link type="text/css" rel="stylesheet" media="all" href="__PUBLIC__/styles/global_color.css" />
<script language="javascript" type="text/javascript">
var timer;
//启动跳转的定时器
function startTimes() {
timer = window.setInterval(showSecondes,1000);
}
var i = 3;
function showSecondes() {
if (i > 0) {
i--;
document.getElementById("secondes").innerHTML = i;
}
else {
window.clearInterval(timer);
location.href = "{:U('Index/index')}";
}
}
//取消跳转
function resetTimer() {
if (timer != null && timer != undefined) {
window.clearInterval(timer);
location.href = "{:U('Index/index')}";
}
}
</script>
</head>
<body class="error_power_page" onload="startTimes();">
<h1 id="error">
您无权访问此页面,&nbsp;<span id="secondes">3</span>&nbsp;秒后将自动跳转,立即跳转请点击&nbsp;
<a class="{:U('Index/index')}" href="javascript:resetTimer();">返回</a>
</h1>
</body>
</html>

View file

@ -0,0 +1,75 @@
<layout name="Public/layout"/>
{:jumps($infos['authority'],CONTROLLER_NAME)}
<!--主要区域开始-->
<div id="main">
<form action="__SELF__" method="post" class="main_form">
<div class="text_info clearfix"><span>角色名称:</span></div>
<div class="input_info">
<input type="text" class="width200" name='role_name'/>
<span class="required">*</span>
<div class="validate_msg_medium">不能为空且为20长度的字母、数字和汉字的组合</div>
</div>
<div class="text_info clearfix"><span>设置权限:</span></div>
<div class="input_info_high">
<div class="input_info_scroll">
<ul>
<!--遍历权限-->
<volist name='res' id='vo'>
<li><input type="checkbox" value='{$vo.id}' name='privliege_id[]'/>{$vo.name}</li>
</volist>
</ul>
</div>
<span class="required">
<input type="button" value="增加" class="btn_add" onclick="location.href='{:U('Privilege/add')}';" />
</span>
<div class="validate_msg_tiny">至少选择一个权限</div>
</div>
<div class="button_info clearfix">
<input type="button" value="保存" class="btn_save" onclick="send()" />
<input type="button" value="取消" class="btn_save" />
</div>
</form>
</div>
<!--主要区域结束-->
<script type="text/javascript">
$(function(){
//点击之后的图标
$('.role_off').addClass('role_on').removeClass('role_off');
});
</script>
<script type="text/javascript">
function send(){
$.ajax({
url: '__SELF__',
type: 'post',
dataType:'json',
data: $(".main_form").serializeArray(),
success: function(data) {
// console.log(data);
//判断是否添加成功!
if(data.status==0){
layer.msg(data.info,{icon: 5});
}else{
layer.msg(data.info,{icon: 6});
//延迟跳转
setTimeout(function () {
location.href = "{:U('Role/index')}";
}, {:C('AJAX_TIME')});
}
}
});
}
</script>

View file

@ -0,0 +1,78 @@
<layout name="Public/layout"/>
{:jumps($infos['authority'],CONTROLLER_NAME)}
<!--主要区域开始-->
<div id="main">
<form action="__SELF__" method="post" class="main_form">
<input type="hidden" name='id' value='{$info.id}'/>
<div class="text_info clearfix"><span>角色名称:</span></div>
<div class="input_info">
<input type="text" class="width200" name='role_name' value='{$info.role_name}'/>
<span class="required">*</span>
<div class="validate_msg_medium">不能为空且为20长度的字母、数字和汉字的组合</div>
</div>
<div class="text_info clearfix"><span>设置权限:</span></div>
<div class="input_info_high">
<div class="input_info_scroll">
<ul>
<!--遍历权限-->
<volist name='res' id='vo'>
<li><input type="checkbox" value='{$vo.id}' name='privliege_id[]'
<php>
if( strstr( $info['names'],$vo['name'] ) ){
echo 'checked';
}
</php>
/>{$vo.name}</li>
</volist>
</ul>
</div>
<span class="required">
<input type="button" value="增加" class="btn_add" onclick="location.href='{:U('Privilege/add')}';" />
</span>
<div class="validate_msg_tiny">至少选择一个权限</div>
</div>
<div class="button_info clearfix">
<input type="button" value="保存" class="btn_save" onclick="send()" />
<input type="button" value="取消" class="btn_save" />
</div>
</form>
</div>
<!--主要区域结束-->
<script type="text/javascript">
$(function(){
//点击之后的图标
$('.role_off').addClass('role_on').removeClass('role_off');
});
</script>
<script type="text/javascript">
function send(){
$.ajax({
url: '__SELF__',
type: 'post',
dataType:'json',
data: $(".main_form").serializeArray(),
success: function(data) {
// console.log(data);
//判断是否添加成功!
if(data.status==0){
layer.msg(data.info,{icon: 5});
}else{
layer.msg(data.info,{icon: 6});
//延迟跳转
setTimeout(function () {
location.href = "{:U('Role/index')}";
}, {:C('AJAX_TIME')});
}
}
});
}
</script>

View file

@ -0,0 +1,99 @@
<layout name="Public/layout"/>
{:jumps($infos['authority'],CONTROLLER_NAME)}
<script language="javascript" type="text/javascript">
function deleteRole() {
var r = window.confirm("确定要删除此角色吗?");
document.getElementById("operate_result_info").style.display = "block";
}
</script>
<!--主要区域开始-->
<div id="main">
<form action="" method="">
<!--查询-->
<div class="search_add">
<input type="button" value="增加" class="btn_add" onclick="location.href='{:U('Role/add')}';" />
</div>
<!--删除的操作提示-->
<div id="operate_result_info" class="operate_success">
<img src="__PUBLIC__/images/close.png" onclick="this.parentNode.style.display='none';" />
删除成功!
</div> <!--删除错误!该角色被使用,不能删除。-->
<!--数据区域:用表格展示数据-->
<div id="data">
<table id="datalist">
<tr>
<th>角色 ID</th>
<th>角色名称</th>
<th class="width600">拥有的权限</th>
<th class="td_modi"></th>
</tr>
<!--遍历数据 start-->
<volist name="res['res']" id='vo' empty="$empty">
<tr>
<td>{$vo.id}</td>
<td>{$vo.role_name}</td>
<td>{$vo.names}</td>
<td>
<input type="button" value="修改" class="btn_modify" onclick="location.href='__CONTROLLER__/edit/id/{$vo.id}';"/>
<input type="button" value="删除" class="btn_delete" onclick="deletes('__CONTROLLER__/delete/id/{$vo.id}'); " />
</td>
</tr>
</volist>
<!--遍历数据 end-->
</table>
</div>
<!--分页-->
<div id="pages">
{$res['page']}
</div>
</form>
</div>
<!--主要区域结束-->
<script type="text/javascript">
$(function(){
//点击之后的图标
$('.role_off').addClass('role_on').removeClass('role_off');
});
</script>
<script type="text/javascript">
//删除
function deletes(obj){
layer.confirm('你确定真的要删除此角色?', {icon: 3, title:'提示'}, function(index){
if(index){
$.get(obj, function(data){
//判断是否删除成功!
if(data.status==0){
layer.msg(data.info,{icon: 5});
}else{
layer.msg(data.info,{icon: 6});
//延迟跳转
setTimeout(function () {
location.href = "{:U('Sell/index')}";
}, {:C('AJAX_TIME')});
}
});
}
layer.close(index);
});
}
</script>

View file

@ -0,0 +1,185 @@
<layout name="Public/layout"/>
{:jumps($infos['authority'],CONTROLLER_NAME)}
<!--主要区域开始-->
<div id="main">
<!-- <form action="__SELF__" method="get" id="search">
查询
<div class="search_add">
<div>货号:<input type="text" class="width100 text_search" value="{:I('get.sn')}" name='sn'/></div>
<div>商品名称:<input type="text" class="text_search" value="{:I('get.name')}" name='name'/></div>
<div>
类型:
<select class="select_search" name='category'>
<option value="">全部</option>
遍历类型
<volist name="category" id="vo">
<option value="{$vo.id}" <php> if( I('get.category')==$vo['id'] ){ echo 'selected';} </php> >{$vo.name}</option>
</volist>
</select>
</div>
<div>
<input type="date" class="width120 text_search" name="month" value="{:I('get.month')}"/>
<php>
dump(strtotime( I('get.month') ) );
</php>
</div>
<div><input type="submit" value="搜索" class="btn_search" /></div>
<input type="button" value="销售记录" class="btn_add" onclick="location.href='sell_record.html';" />
</div>
</form> -->
<form action="__SELF__" method="get" id="search">
<!--查询-->
<div class="search_add">
<div>货号:<input type="text" class="text_search width130" value="{:I('get.sn')}" name='sn'/></div>
<div>名称:<input type="text" class="width110 text_search" value="{:I('get.name')}" name='name'/></div>
<div>
排序:
<select class="select_search" name='order'>
<option value="id asc">默认</option>
<option value="price asc" <php> if( I('get.order')=='price asc' ){ echo 'selected';} </php> > ↑ 价格从低到高 </option>
<option value="price desc" <php> if( I('get.order')=='price desc' ){ echo 'selected';} </php> > ↓ 价格从高到低 </option>
<option value="count asc" <php> if( I('get.order')=='count asc' ){ echo 'selected';} </php> > ↑ 库存从低到高 </option>
<option value="count desc" <php> if( I('get.order')=='count desc' ){ echo 'selected';} </php> > ↓ 库存从高到低 </option>
<option value="time asc" <php> if( I('get.order')=='time asc' ){ echo 'selected';} </php> > ↑ 日期从低到高 </option>
<option value="time desc" <php> if( I('get.order')=='time desc' ){ echo 'selected';} </php> > ↓ 日期从高到低 </option>
</select>
</div>
<div>
类型:
<select class="select_search" name='category'>
<option value="">全部</option>
<!--遍历类型-->
<volist name="category" id="vo">
<option value="{$vo.id}" <php> if( I('get.category')==$vo['id'] ){ echo 'selected';} </php> >{$vo.name}</option>
</volist>
</select>
</div>
<input type="button" value="销售记录" class="btn_add" onclick="location.href='__CONTROLLER__/record';" />
<div style='margin:5px 0;display:block; '>
<div>
价格:<input type="text" class="width80 text_search" value="{:I('get.start_price')}" name='start_price'/>
-
<input type="text" class="width80 text_search" value="{:I('get.end_price')}" name='end_price'/>
</div>
<!-- <div>
库存:<input type="text" class="width70 text_search" value="{:I('get.start_stock')}" name='start_stock'/>
-
<input type="text" class="width70 text_search" value="{:I('get.end_stock')}" name='end_stock'/>
</div> -->
<div>
日期:<input type="date" class="width130 text_search" value="{:I('get.start_time')}" name='start_time'/>
-
<input type="date" class="width130 text_search" value="{:I('get.end_time')}" name='end_time'/>
</div>
</div>
</div>
<!--搜索开始-->
<div>
<input type="button" value="搜索" class="btn_search" id="btn_search" onclick="search()"/>
<button onclick="preview('data');" id="print">打印</button>
</div>
<!--搜索结束-->
</form>
<!--数据区域:用表格展示数据-->
<div id="data">
<table id="datalist">
<tr>
<th class="width50">商品ID</th>
<th class="width70">货号</th>
<th>商品名称</th>
<th class="width100">类别</th>
<th class="width70">库存</th>
<th class="width50">单价</th>
<th class="width50"></th>
</tr>
<volist name="res['res']" id='vo' empty="$empty">
<tr>
<td>{$vo.id}</td>
<td>{$vo.sn}</td>
<td>{$vo.name}</td>
<td>{$vo.category_name}</td>
<td>{:array_sum( explode(',',$vo['count']) ); }</td>
<td>{$vo.price}</td>
<td><a href="__CONTROLLER__/item/id/{$vo.id}" title="账单明细">明细</a></td>
</tr>
</volist>
</table>
</div>
<!--分页-->
<div id="pages">
{$res['page']}
</div>
</div>
<!--主要区域结束-->
<script type="text/javascript">
$(function(){
//点击之后的图标
$('.sell_off').addClass('sell_on').removeClass('sell_off');
});
function search(){
layer.load(2); //加载
setTimeout(function(){
$('#search').submit();
},{:C('SEARCH_TIME')});
}
$(function(){
$('#status').change(function(){
$('#search').submit();
});
$('select').change(function(){
$('#search').submit();
});
});
//键盘事件
$(document).keydown(function(event){
if(event.keyCode == 13){
// alert(event.keyCode);
search();
}
});
</script>
<script type="text/javascript">
function preview(id){
var sprnhtml=$('#'+id).html(); //获取区域内容
var selfhtml=$('body').html(); //获取当前页的html
$('body').html(sprnhtml);
window.print(); //打印
$('body').html(selfhtml); //赋值
}
</script>

View file

@ -0,0 +1,483 @@
<layout name="Public/layout"/>
{:jumps($infos['authority'],CONTROLLER_NAME)}
<!--主要区域开始-->
<div id="main">
<form action="__SELF__" method="post" class="main_form">
<input type="hidden" name="id" value='{$info.id}' />
<div class="text_info clearfix"><span>编号:</span></div>
<div class="input_info">
<input type="text" class="width200" name='sn' value='{$info.sn}'/>
<span class="required">*</span>
<div class="validate_msg_medium">不能为空且为20长度的字母、数字和汉字的组合</div>
</div>
<div class="text_info clearfix"><span>商品名称:</span></div>
<div class="input_info">
<input type="text" class="width200" name='name' value='{$info.name}'/>
<span class="required">*</span>
<div class="validate_msg_medium">不能为空且为20长度的字母、数字和汉字的组合</div>
</div>
<div class="text_info clearfix"><span>商品品牌:</span></div>
<div class="input_info">
<select name="brand_id">
<!--品牌分类-->
<volist name="brand" id="vo">
<option value="{$vo.id}"
<php>if($info['brand_id']==$vo['id']){ echo 'selected'; }</php>
>{$vo.name}</option>
</volist>
</select>
<!-- <input type="button" value="增加" class="btn_add" onclick="location.href='{:U('Brand/add')}';" />-->
</div>
<div class="text_info clearfix"><span>商品类型:</span></div>
<div class="input_info" id="as">
<select name="category_id" id="category_id" onchange="get_attr(this)" >
<!--遍历类型-->
<volist name='category' id='vo'>
<option value="{$vo.id}"
<php>if($info['category_id']==$vo['id']){ echo 'selected'; }</php>
>{$vo.name}</option>
</volist>
</select>
<span class="required">
<!--<input type="button" value="增加" class="btn_add" onclick="location.href='{:U('Category/add')}';" />-->
</span>
<div class="validate_msg_tiny">至少选择一个类型</div>
</div>
<div class="button_info clearfix">
{:W('Menu/goods')}
</div>
<div class="button_info clearfix">
<input type="button" value="下单" class="btn_save" onclick="send()" />
<input type="button" value="取消" class="btn_save" />
</div>
</form>
</div>
<!--主要区域结束-->
<style type="text/css">
.l-text{
width: 80px;
}
.li_width label input{
position: relative;
top:10px;
}
</style>
<script type="text/javascript">
$(function(){
//点击之后的图标
$('.sell_off').addClass('sell_on').removeClass('sell_off');
});
</script>
<script type="text/javascript">
function send(){
layer.confirm('你确定真的要下单吗?', {icon: 3, title:'提示'}, function(index){
if(index){
$.ajax({
url: '__SELF__',
type: 'post',
dataType:'json',
data: $(".main_form").serializeArray(),
success: function(data) {
// console.log(data);
//判断是否添加成功!
if(data.status==0){
layer.msg(data.info,{icon: 5});
}else{
layer.msg(data.info,{icon: 6});
//延迟跳转
setTimeout(function () {
location.href = "{:U('Sell/index')}";
}, {:C('AJAX_TIME')});
}
}
});
}
layer.close(index);
});
}
</script>
<script type="text/javascript">
$(function(){
$('#category_id').change();
});
function get_attr(obj){
var isa=jQuery("#category_id option:selected").val();
$('.afters').remove();
$('.div_contentlist').html('');
$.get('__CONTROLLER__/get_attr/id/'+isa, function(data){
// console.log(data);
//第一层遍历
$.each( data, function(index, value)
{
content = (value.content).split(",");
//console.log(value.id);
//下拉框
var option='';
$.each( content, function(k, v)
{
if( value.type=='select' ){
option+="<option value='"+v+"' >"+v+"</option>"
}
});
var checkedstrat='<ul class="Father_Title"><li>'+value.name+'</li></ul> <ul class="Father_Item'+index+'">';
var checked_end='</ul><br/><br/><br/><br/>';
var check='';
$.each( content, function(k, v)
{
if( value.type=='checkbox' ){
// console.log(value.name);
check+=' <li class="li_width"><label><input id="Checkbox'+value.id+k+'" type="checkbox" class="chcBox_Width" value="'+v+'" />'+v+'<span class="li_empty" ></span></label></li> ';
}
});
//下拉框结束
if( value.type == 'select' ){
var str="<div class='text_info clearfix afters'><span>"+value.name+"</span></div><div class='input_info afters'> <select name='attrbute_id["+value.id+"]' class='get_contents_"+value.id+" ' >"+ option +"</select> <span class='required'></span><div class='validate_msg_tiny'>至少选择一个</div></div> ";
$('#as').after(str);
attr('select');
}else if(value.type == 'text'){
var str="<div class='text_info clearfix afters'><span>"+value.name+"</span></div><div class='input_info afters'> <input type='text' name='attrbute_id["+value.id+"]' class='get_contents_"+value.id+" ' /> <span class='required'></span><div class='validate_msg_tiny'>至少选择一个类型</div></div> ";
$('#as').after(str);
attr('text');
}else if(value.type == 'date'){
var str="<div class='text_info clearfix afters'><span>"+value.name+"</span></div><div class='input_info afters'> <input type='date' name='attrbute_id["+value.id+"]' class='get_contents_"+value.id+" ' /> <span class='required'></span><div class='validate_msg_tiny'>请填写</div></div> ";
$('#as').after(str);
attr('date');
}else if(value.type == 'checkbox'){
var str=checkedstrat+check+checked_end;
$('.div_contentlist').append(str);
attr('checkbox');
$(".div_contentlist label").bind("change", function () {
step.Creat_Table();
});
var step = {
//SKU信息组合
Creat_Table: function () {
step.hebingFunction();
var SKUObj = $(".Father_Title");
//var skuCount = SKUObj.length;//
var arrayTile = new Array();//标题组数
var arrayInfor = new Array();//盛放每组选中的CheckBox值的对象
var arrayColumn = new Array();//指定列,用来合并哪些列
var bCheck = true;//是否全选
var columnIndex = 0;
$.each(SKUObj, function (i, item){
arrayColumn.push(columnIndex);
columnIndex++;
arrayTile.push(SKUObj.find("li").eq(i).html().replace("", ""));
var itemName = "Father_Item" + i;
//选中的CHeckBox取值
var order = new Array();
$("." + itemName + " input[type=checkbox]:checked").each(function (){
order.push($(this).val());
});
arrayInfor.push(order);
if (order.join() == ""){
bCheck = false;
}
//var skuValue = SKUObj.find("li").eq(index).html();
});
//开始创建Table表
if (bCheck == true) {
var RowsCount = 0;
$("#createTable").html("");
var table = $("<table id=\"process\" border=\"1\" cellpadding=\"1\" cellspacing=\"0\" style=\"width:100%;padding:1px;\"></table>");
table.appendTo($("#createTable"));
var thead = $("<thead></thead>");
thead.appendTo(table);
var trHead = $("<tr></tr>");
trHead.appendTo(thead);
//创建表头
$.each(arrayTile, function (index, item) {
var td = $("<th>" + item + "</th>");
td.appendTo(trHead);
});
var itemColumHead = $("<th style=\"width:70px;\">价格</th><th style=\"width:70px;\">库存</th><th style=\"width:70px;\">数量</th> ");
itemColumHead.appendTo(trHead);
var tbody = $("<tbody></tbody>");
tbody.appendTo(table);
////生成组合
var zuheDate = step.doExchange(arrayInfor);
if (zuheDate.length > 0) {
//创建行
$.each(zuheDate, function (index, item) {
var td_array = item.split(",");
var tr = $("<tr></tr>");
tr.appendTo(tbody);
$.each(td_array, function (i, values) {
var td = $("<td>" + values + "</td>");
td.appendTo(tr);
// console.log( values );
});
//把php字符串赋值给js,并js转为数组
var counts="{$info.count}";
counts = counts.split(',').sort();
//把php字符串赋值给js,并js转为数组
var prices="{$info.prices}";
prices = prices.split(',').sort();
//console.log(index);
console.log(counts);
//判断库存是否为空
if(counts[index]==0){
var td1 = $("<td><input class=\"l-text\" type=\"text\" value=\" "+prices[index]+" \" readonly></td>" );
td1.appendTo(tr);
var td2 = $("<td> <input class=\"l-text\" type=\"text\" value=\" "+counts[index]+"\" readonly></td>");
td2.appendTo(tr);
var td3 = $("<td> <input class=\"l-text\" type=\"text\" value=\"暂无\" disabled></td>");
td3.appendTo(tr);
}else{
var td1 = $("<td> <input name=\"spec_item[]\" class=\"l-text\" type=\"hidden\" value=\""+item+" \" > <input name=\"price[]\" class=\"l-text\" type=\"text\" value=\" "+prices[index]+" \" ></td>" );
td1.appendTo(tr);
var td2 = $("<td> <input name=\"count[]\" class=\"l-text\" type=\"text\" value=\" "+counts[index]+"\" readonly></td>");
td2.appendTo(tr);
var td3 = $("<td> <input name=\"num[]\" class=\"l-text\" type=\"number\" value=\"\"></td>");
td3.appendTo(tr);
}
});
}
//结束创建Table表
arrayColumn.pop();//删除数组中最后一项
//合并单元格
$(table).mergeCell({
// 目前只有cols这么一个配置项, 用数组表示列的索引,从0开始
cols: arrayColumn
});
} else{
//未全选中,清除表格
document.getElementById('createTable').innerHTML="";
}
},//合并行
hebingFunction: function () {
$.fn.mergeCell = function (options) {
return this.each(function () {
var cols = options.cols;
for (var i = cols.length - 1; cols[i] != undefined; i--) {
// fixbug console调试
// console.debug(cols[i]);
mergeCell($(this), cols[i]);
}
dispose($(this));
});
};
function mergeCell($table, colIndex) {
$table.data('col-content', ''); // 存放单元格内容
$table.data('col-rowspan', 1); // 存放计算的rowspan值 默认为1
$table.data('col-td', $()); // 存放发现的第一个与前一行比较结果不同td(jQuery封装过的), 默认一个"空"的jquery对象
$table.data('trNum', $('tbody tr', $table).length); // 要处理表格的总行数, 用于最后一行做特殊处理时进行判断之用
// 进行"扫面"处理 关键是定位col-td, 和其对应的rowspan
$('tbody tr', $table).each(function (index) {
// td:eq中的colIndex即列索引
var $td = $('td:eq(' + colIndex + ')', this);
// 取出单元格的当前内容
var currentContent = $td.html();
// 第一次时走此分支
if ($table.data('col-content') == '') {
$table.data('col-content', currentContent);
$table.data('col-td', $td);
} else {
// 上一行与当前行内容相同
if ($table.data('col-content') == currentContent) {
// 上一行与当前行内容相同则col-rowspan累加, 保存新值
var rowspan = $table.data('col-rowspan') + 1;
$table.data('col-rowspan', rowspan);
// 值得注意的是 如果用了$td.remove()就会对其他列的处理造成影响
$td.hide();
// 最后一行的情况比较特殊一点
// 比如最后2行 td中的内容是一样的, 那么到最后一行就应该把此时的col-td里保存的td设置rowspan
if (++index == $table.data('trNum'))
$table.data('col-td').attr('rowspan', $table.data('col-rowspan'));
} else { // 上一行与当前行内容不同
// col-rowspan默认为1, 如果统计出的col-rowspan没有变化, 不处理
if ($table.data('col-rowspan') != 1) {
$table.data('col-td').attr('rowspan', $table.data('col-rowspan'));
}
// 保存第一次出现不同内容的td, 和其内容, 重置col-rowspan
$table.data('col-td', $td);
$table.data('col-content', $td.html());
$table.data('col-rowspan', 1);
}
}
});
}
// 同样是个private函数 清理内存之用
function dispose($table) {
$table.removeData();
}
},
//组合数组
doExchange: function (doubleArrays) {
var len = doubleArrays.length;
if (len >= 2) {
var arr1 = doubleArrays[0];
var arr2 = doubleArrays[1];
var len1 = doubleArrays[0].length;
var len2 = doubleArrays[1].length;
var newlen = len1 * len2;
var temp = new Array(newlen);
var index = 0;
for (var i = 0; i < len1; i++) {
for (var j = 0; j < len2; j++) {
temp[index] = arr1[i] + "," + arr2[j];
index++;
}
}
var newArray = new Array(len - 1);
newArray[0] = temp;
if (len > 2) {
var _count = 1;
for (var i = 2; i < len; i++) {
newArray[_count] = doubleArrays[i];
_count++;
}
}
//console.log(newArray);
return step.doExchange(newArray);
}
else {
return doubleArrays[0];
}
}
}
return step;
/*******************************************************************/
}
});
});
// layer.msg(isa);
}
</script>
<php>
//多选框选中状态
//$attrbute_id=explode(",",$info['attrbute_id']);
$attrbute_value=explode(":",$info['attrbute_value']);
$attrbute_value=array_filter( array_unique( $attrbute_value )) ;
$attrbute_id= array_values( array_filter( explode(",",$info['attrbute_id']) ) );
$attrbute_val= explode(",",$info['val']) ;
$arr=array();
foreach($attrbute_value as $v){
$arr[]=explode(",",$v);
}
foreach($arr as $v){
foreach($v as $val){
$arrs.=$val.',';
}
}
$attrbute_value=array_values( array_filter( explode(",",$arrs) ) );
//dump($attrbute_value);
//dump($attrbute_id);
//dump($attrbute_val);
echo "<script type='text/javascript'> function attr(obj){ if(obj=='checkbox'){ \r\n ";
echo "\$(\"input\").each(function(){ \r\n";
foreach($attrbute_value as $k=>$v){
printf(" if( \$(this).val()=='%s' ) { $(this).prop(\"checked\",true); } \r\n",trim($attrbute_value[$k]) );
}
echo"}); \r\n";
echo " }else if(obj=='select'){ \r\n";
foreach($attrbute_id as $k=>$v){
printf(" \$(\".get_content_%u option[value='%s'] \").prop(\"selected\",true); \r\n",trim($v),trim($attrbute_val[$k]) );
}
echo " }else{ \r\n ";
foreach($attrbute_id as $k=>$v){
printf(" \$(\".get_contents_%u\").val(\"%s\"); \r\n",trim($v),trim($attrbute_val[$k]) );
}
echo " } }</script>";
</php>
<script type="text/javascript">
$(function(){
setTimeout(function () {
//设置保留选中的选择框
$(".chcBox_Width:not(checked)").each(function(){
if( $(this).prop('checked')) {
//$(this).prop("checked",false);
}else{
$(this).parent().remove();
}
});
}, 500);
});
</script>
<script type="text/javascript">
$(function(){
//延迟加载属性
setTimeout(function () {
$(".div_contentlist label").change();
}, 200);
});
</script>

View file

@ -0,0 +1,107 @@
<layout name="Public/layout"/>
{:jumps($infos['authority'],CONTROLLER_NAME)}
<!--主要区域开始-->
<div id="main">
<form action="__SELF__" method="get" id="search">
<!--查询-->
<div class="search_add">
<div>账号:<span class="readonly width70">{$infos.nickname}</span></div>
<div>职位:<span class="readonly width70">{$infos.position_name}</span></div>
<div>
人名:<input type="text" name="name"class="text_search width100" value="{:I('get.name')}"/>
</div>
<div>
日期:<input type="date" name="create_time" class="width130 text_search" value="{:I('get.create_time')}"/>
</div>
<div>
类型:
<select class="select_search" name='category'>
<option value="">全部</option>
<!--遍历类型-->
<volist name="category" id="vo">
<option value="{$vo.id}" <php> if( I('get.category')==$vo['id'] ){ echo 'selected';} </php> >{$vo.name}</option>
</volist>
</select>
</div>
<div><input type="submit" value="搜索" class="btn_search" /></div>
<input type="button" value="返回" class="btn_add" onclick="location.href='__CONTROLLER__/index';" />
</div>
</form>
<!--数据区域:用表格展示数据-->
<div id="data">
<table id="datalist">
<tr>
<th>员工编号</th>
<th>姓名</th>
<th>日期</th>
<th>商品编号</th>
<th>商品名称</th>
<th>尺码</th>
<th>颜色</th>
<th>价格</th>
<th>类型</th>
</tr>
<volist name="res['res']" id="vo" empty="$empty">
<tr>
<td>{$vo.no}</td>
<td>{$vo.name}</td>
<td>{:date('Y-m-d H:i:s',$vo['create_time'])}</td>
<td>{$vo.sn}</td>
<td>{$vo.goods_name}</td>
<td>{:explode(',',$vo['value'])[0]}</td>
<td>{:explode(',',$vo['value'])[1]}</td>
<td>{$vo.price}</td>
<td>{$vo.category_name}</td>
</tr>
</volist>
</table>
</div>
<!--分页-->
<div id="pages">
{$res['page']}
</div>
</form>
</div>
<!--主要区域结束-->
<script type="text/javascript">
$(function(){
//点击之后的图标
$('.sell_off').addClass('sell_on').removeClass('sell_off');
});
</script>
<script type="text/javascript">
function search(){
layer.load(2); //加载
setTimeout(function(){
$('#search').submit();
},{:C('SEARCH_TIME')});
}
$(function(){
$('#status').change(function(){
$('#search').submit();
});
$('select').change(function(){
$('#search').submit();
});
});
//键盘事件
$(document).keydown(function(event){
if(event.keyCode == 13){
search();
}
});
</script>

View file

@ -0,0 +1,96 @@
<layout name="Public/layout"/>
{:jumps($infos['authority'],CONTROLLER_NAME)}
<!--主要区域开始-->
<div id="main">
<form action="__SELF__" method="post" class="main_form">
<div class="text_info clearfix"><span>门店名称:</span></div>
<div class="input_info">
<input type="text" class="width300" value="" name='name'/>
<span class="required">*</span>
<div class="validate_msg_short">20长度的字母、数字、汉字和下划线的组合</div>
</div>
<div class="text_info clearfix"><span>管理者:</span></div>
<div class="input_info">
<input type="text" value="" class="width110" name='leader'/>
<span class="info"></span>
<span class="required">*</span>
<div class="validate_msg_long">10长度的字母、数字、汉字</div>
</div>
<div class="text_info clearfix"><span>电话:</span></div>
<div class="input_info">
<input type="text" value="" class="width150" name='tel'/>
<span class="required">*</span>
<div class="validate_msg_long ">数字组合</div>
</div>
<div class="text_info clearfix"><span>创建时间:</span></div>
<div class="input_info">
<input type="date" value="" class="width150" name='create_time'/>
<span class="required">*</span>
<div class="validate_msg_long ">数字组合</div>
</div>
<div class="text_info clearfix"><span>地址:</span></div>
<div class="input_info">
<input type="text" value="" class="width300" name='address'/>
<div class="validate_msg_short ">数字、字母、汉字组合</div>
</div>
<div class="text_info clearfix"><span>描述:</span></div>
<div class="input_info_high">
<textarea class="width300 height70" name='desc'></textarea>
<div class="validate_msg_short ">100长度的字母、数字、汉字和下划线的组合</div>
</div>
<div class="button_info clearfix">
<input type="button" value="保存" class="btn_save" onclick="send()" />
<input type="reset" value="取消" class="btn_save" />
</div>
</form>
</div>
<!--主要区域结束-->
<script type="text/javascript">
$(function(){
//点击之后的图标
$('.store_off').addClass('store_on').removeClass('store_off');
});
</script>
<script type="text/javascript">
//ajax提交
function send(obj){
$.ajax({
url: '__SELF__',
type: 'post',
dataType:'json',
data: $(".main_form").serializeArray(),
success: function(data) {
// console.log(data);
//判断是否添加成功!
if(data.status==0){
layer.msg(data.info,{icon: 5});
}else{
layer.msg(data.info,{icon: 6});
//延迟跳转
setTimeout(function () {
location.href = "{:U('Store/index')}";
}, {:C('AJAX_TIME')});
}
}
});
}
</script>

View file

@ -0,0 +1,71 @@
<layout name="Public/layout"/>
{:jumps($infos['authority'],CONTROLLER_NAME)}
<!--主要区域开始-->
<div id="main">
<form action="__SELF__" method="post" class="main_form">
<div class="text_info clearfix"><span>ID</span></div>
<div class="input_info">
<input type="text" class="width300" value="{$info.id}" name='id' disabled/>
<span class="required">*</span>
<div class="validate_msg_short">20长度的字母、数字、汉字和下划线的组合</div>
</div>
<div class="text_info clearfix"><span>门店名称:</span></div>
<div class="input_info">
<input type="text" class="width300" value="{$info.name}" name='name' disabled/>
<span class="required">*</span>
<div class="validate_msg_short">20长度的字母、数字、汉字和下划线的组合</div>
</div>
<div class="text_info clearfix"><span>管理者:</span></div>
<div class="input_info">
<input type="text" value="{$info.leader}" class="width110" name='leader' disabled/>
<span class="info"></span>
<span class="required">*</span>
<div class="validate_msg_long">10长度的字母、数字、汉字</div>
</div>
<div class="text_info clearfix"><span>电话:</span></div>
<div class="input_info">
<input type="text" value="{$info.tel}" class="width150" name='tel' disabled/>
<span class="required">*</span>
<div class="validate_msg_long ">数字组合</div>
</div>
<div class="text_info clearfix"><span>创建时间:</span></div>
<div class="input_info">
<input type="date" value="{$info.create_time}" class="width150" name='create_time' disabled/>
<span class="required">*</span>
<div class="validate_msg_long ">数字组合</div>
</div>
<div class="text_info clearfix"><span>地址:</span></div>
<div class="input_info">
<input type="text" value="{$info.address}" class="width300" name='address' disabled/>
<div class="validate_msg_short ">数字、字母、汉字组合</div>
</div>
<div class="text_info clearfix"><span>描述:</span></div>
<div class="input_info_high">
<textarea class="width300 height70" name='desc' disabled>{$info.desc}</textarea>
<div class="validate_msg_short ">100长度的字母、数字、汉字和下划线的组合</div>
</div>
<!-- <div class="button_info clearfix">
<input type="button" value="保存" class="btn_save" onclick="send()" />
<input type="reset" value="取消" class="btn_save" />
</div>-->
</form>
</div>
<!--主要区域结束-->
<script type="text/javascript">
$(function(){
//点击之后的图标
$('.store_off').addClass('store_on').removeClass('store_off');
});
</script>

View file

@ -0,0 +1,98 @@
<layout name="Public/layout"/>
{:jumps($infos['authority'],CONTROLLER_NAME)}
<!--主要区域开始-->
<div id="main">
<form action="__SELF__" method="post" class="main_form">
<input type="hidden" name="id" value='{$info.id}' />
<div class="text_info clearfix"><span>门店名称:</span></div>
<div class="input_info">
<input type="text" class="width300" value="{$info.name}" name='name'/>
<span class="required">*</span>
<div class="validate_msg_short">20长度的字母、数字、汉字和下划线的组合</div>
</div>
<div class="text_info clearfix"><span>管理者:</span></div>
<div class="input_info">
<input type="text" value="{$info.leader}" class="width110" name='leader'/>
<span class="info"></span>
<span class="required">*</span>
<div class="validate_msg_long">10长度的字母、数字、汉字</div>
</div>
<div class="text_info clearfix"><span>电话:</span></div>
<div class="input_info">
<input type="text" value="{$info.tel}" class="width150" name='tel'/>
<span class="required">*</span>
<div class="validate_msg_long ">数字组合</div>
</div>
<div class="text_info clearfix"><span>创建时间:</span></div>
<div class="input_info">
<input type="date" value="{$info.create_time}" class="width150" name='create_time'/>
<span class="required">*</span>
<div class="validate_msg_long ">数字组合</div>
</div>
<div class="text_info clearfix"><span>地址:</span></div>
<div class="input_info">
<input type="text" value="{$info.address}" class="width300" name='address'/>
<div class="validate_msg_short ">数字、字母、汉字组合</div>
</div>
<div class="text_info clearfix"><span>描述:</span></div>
<div class="input_info_high">
<textarea class="width300 height70" name='desc'>{$info.desc}</textarea>
<div class="validate_msg_short ">100长度的字母、数字、汉字和下划线的组合</div>
</div>
<div class="button_info clearfix">
<input type="button" value="保存" class="btn_save" onclick="send()" />
<input type="reset" value="取消" class="btn_save" />
</div>
</form>
</div>
<!--主要区域结束-->
<script type="text/javascript">
$(function(){
//点击之后的图标
$('.store_off').addClass('store_on').removeClass('store_off');
});
</script>
<script type="text/javascript">
//ajax提交
function send(obj){
$.ajax({
url: '__SELF__',
type: 'post',
dataType:'json',
data: $(".main_form").serializeArray(),
success: function(data) {
// console.log(data);
//判断是否添加成功!
if(data.status==0){
layer.msg(data.info,{icon: 5});
}else{
layer.msg(data.info,{icon: 6});
//延迟跳转
setTimeout(function () {
location.href = "{:U('Store/index')}";
}, {:C('AJAX_TIME')});
}
}
});
}
</script>

View file

@ -0,0 +1,160 @@
<layout name="Public/layout"/>
{:jumps($infos['authority'],CONTROLLER_NAME)}
<script language="javascript" type="text/javascript">
//排序按钮的点击事件
function sort(btnObj) {
if (btnObj.className == "sort_desc")
btnObj.className = "sort_asc";
else
btnObj.className = "sort_desc";
}
</script>
<!--主要区域开始-->
<div id="main">
<form action="" method="">
<!--排序-->
<div class="search_add">
<div>
<!-- <input type="button" value="时间" class="sort_asc" onclick="sort(this);" />-->
<!-- <input type="button" value="基费" class="sort_asc" onclick="sort(this);" />
<input type="button" value="时长" class="sort_asc" onclick="sort(this);" />-->
</div>
<input type="button" value="增加" class="btn_add" onclick="location.href='add';" />
</div>
<!--数据区域:用表格展示数据-->
<div id="data">
<table id="datalist">
<tr>
<th>ID</th>
<th class="width150">名称</th>
<th>管理者</th>
<th>电话</th>
<th>地址</th>
<th>创建时间</th>
<th class="width50">状态</th>
<th class="width200"></th>
</tr>
<volist name="res['res']" id='vo'>
<tr>
<td>{$vo.id}</td>
<td><a href="__CONTROLLER__/detail/id/{$vo.id}">{$vo.name}</a></td>
<td>{$vo.leader}</td>
<td>{$vo.tel}</td>
<td>{$vo.address}</td>
<td>{$vo.create_time}</td>
<td>
<if condition="$vo['status'] eq 0 ">
正常
<else />
暂停
</if>
</td>
<td>
<if condition="$vo['status'] eq 0 ">
<input type="button" value="暂停" class="btn_pause" onclick="set_status( '__CONTROLLER__/status/id/{$vo.id}/status/1' );" />
<else />
<input type="button" value="启用" class="btn_start" onclick="set_status( '__CONTROLLER__/status/id/{$vo.id}/status/0' );" />
</if>
<input type="button" value="修改" class="btn_modify" onclick="location.href='__CONTROLLER__/edit/id/{$vo.id}';" />
<input type="button" value="删除" class="btn_delete" onclick="deletes('__CONTROLLER__/delete/id/{$vo.id}');" />
</td>
</tr>
</volist>
</table>
<p>业务说明:<br />
1、创建资费时状态为暂停记载创建时间<br />
2、暂停状态下可修改可删除<br />
3、开通后记载开通时间且开通后不能修改、不能再停用、也不能删除<br />
4、业务账号修改资费时在下月底统一触发修改其关联的资费ID此触发动作由程序处理
</p>
</div>
<!--分页-->
<div id="pages">
{$res['page']}
</div>
</form>
</div>
<!--主要区域结束-->
<script type="text/javascript">
$(function(){
//点击之后的图标
$('.store_off').addClass('store_on').removeClass('store_off');
});
</script>
<script type="text/javascript">
//禁止 开通
function set_status(obj){
layer.confirm('你确定真的要修改用户状态吗?', {icon: 3, title:'提示'}, function(index){
if(index){
$.ajax({
type: "GET",
url: obj,
success: function(data){
//判断修改加成功!
if(data.status==0){
layer.msg(data.info,{icon: 5});
}else{
layer.msg(data.info,{icon: 6});
//延迟跳转
setTimeout(function () {
location.href = "{:U('Store/index')}";
}, {:C('AJAX_TIME')});
}
}
});
// layer.msg(obj);
}
layer.close(index);
});
}
//删除
function deletes(obj){
layer.confirm('你确定真的要删除此分店?', {icon: 3, title:'提示'}, function(index){
if(index){
$.get(obj, function(data){
//判断是否删除成功!
if(data.status==0){
layer.msg(data.info,{icon: 5});
}else{
layer.msg(data.info,{icon: 6});
//延迟跳转
setTimeout(function () {
location.href = "{:U('Store/index')}";
}, {:C('AJAX_TIME')});
}
});
}
layer.close(index);
});
}
</script>

View file

@ -0,0 +1,88 @@
<layout name="Public/layout"/>
<!--主要区域开始-->
<div id="main">
<form action="__SELF__" method="post" class="main_form">
<div class="text_info clearfix"><span>ID</span></div>
<div class="input_info"><input type="text" readonly="readonly" class="readonly" name="id" value="{$infos.user_id}" /></div>
<div class="text_info clearfix"><span>用户账号:</span></div>
<div class="input_info"><input type="text" readonly="readonly" class="readonly" value="{$infos.username}" /></div>
<div class="text_info clearfix"><span>姓名:</span></div>
<div class="input_info">
<input type="text" value="{$infos.nickname}" name="nickname" />
<span class="required">*</span>
<div class="validate_msg_long">20长度以内的汉字、字母的组合</div>
</div>
<div class="text_info clearfix"><span>角色:</span></div>
<div class="input_info">
<input type="text" readonly="readonly" class="readonly width400" value="{$infos.role_name}" />
</div>
<!-- <div class="text_info clearfix"><span>款式:</span></div>
<div class="input_info">
<select disabled>
<option>职员</option>
<option>店长</option>
</select>
</div>-->
<div class="text_info clearfix"><span>电话:</span></div>
<div class="input_info">
<input type="text" class="width200" value="{$infos.tel}" name="tel"/>
<span class="required">*</span>
<div class="validate_msg_medium">电话号码格式:手机或固话</div>
</div>
<div class="text_info clearfix"><span>Email</span></div>
<div class="input_info">
<input type="text" class="width200" value="{$infos.email}" name="email"/>
<span class="required">*</span>
<div class="validate_msg_medium">50长度以内符合 email 格式</div>
</div>
<div class="text_info clearfix"><span>创建时间:</span></div>
<div class="input_info"><input type="text" readonly="readonly" class="readonly" value="{:date('Y-m-d H:i:s',$infos['create_time'])}"/></div>
<div class="button_info clearfix">
<input type="button" value="保存" class="btn_save" onclick="send()" />
<input type="button" value="取消" class="btn_save" />
</div>
</form>
</div>
<!--主要区域结束-->
<script type="text/javascript">
$(function(){
//点击之后的图标
$('.information_off').addClass('information_on').removeClass('information_off');
});
</script>
<script type="text/javascript">
function send(){
$.ajax({
url: '__SELF__',
type: 'post',
dataType:'json',
data: $(".main_form").serializeArray(),
success: function(data) {
//判断是否修改成功!
if(data.status==0){
layer.msg(data.info,{icon: 5});
}else{
layer.msg(data.info,{icon: 6});
//延迟跳转
setTimeout(function () {
location.href = "{:U('User/info')}";
}, {:C('AJAX_TIME')});
}
}
});
}
</script>

View file

@ -0,0 +1,65 @@
<layout name="Public/layout"/>
<div id="main">
<form action="__SELF__" method="post" class="main_form">
<input type="hidden" name="id" value="{$infos.user_id}"/>
<div class="text_info clearfix"><span>旧密码:</span></div>
<div class="input_info">
<input type="password" class="width200" name="old_password" /><span class="required">*</span>
<div class="validate_msg_medium">30长度以内的字母、数字和下划线的组合</div>
</div>
<div class="text_info clearfix"><span>新密码:</span></div>
<div class="input_info">
<input type="password" class="width200" name="password"/><span class="required">*</span>
<div class="validate_msg_medium">30长度以内的字母、数字和下划线的组合</div>
</div>
<div class="text_info clearfix"><span>重复新密码:</span></div>
<div class="input_info">
<input type="password" class="width200" name="confirm_password"/><span class="required">*</span>
<div class="validate_msg_medium">两次新密码必须相同</div>
</div>
<div class="button_info clearfix">
<input type="button" value="保存" class="btn_save" onclick="send()" />
<input type="button" value="取消" class="btn_save" />
</div>
</form>
</div>
<!--主要区域结束-->
<script type="text/javascript">
$(function(){
//点击之后的图标
$('.password_off').addClass('password_on').removeClass('password_off');
});
</script>
<script type="text/javascript">
function send(){
$.ajax({
url: '__SELF__',
type: 'post',
dataType:'json',
data: $(".main_form").serializeArray(),
success: function(data) {
//判断是否修改成功!
if(data.status==0){
layer.msg(data.info,{icon: 5});
}else{
layer.msg(data.info,{icon: 6});
//延迟跳转
setTimeout(function () {
location.href = "{:U('Login/admin')}";
}, {:C('AJAX_TIME')});
}
}
});
}
</script>

View file

@ -0,0 +1,27 @@
<!--<script type="text/javascript" src="__PUBLIC__/goods/js/liandong.js"></script>-->
<link type="text/css" rel="stylesheet" href="__PUBLIC__/goods/liandong.css">
<div id="navtab1" style=" border: 1px solid #A3C0E8;">
<div title="扩展信息" tabid="tabItem3">
<div id="Div1">
<div position="center">
<div style="padding: 5px 8px;" class="div_content">
<div class="div_title"><span>产品规格</span></div>
<div class="div_contentlist">
<!--属性列表-->
</div>
<div class="div_contentlist2">
<ul>
<li><div id="createTable"></div></li>
</ul>
</div>
</div>
</div>
</div>
</div>
</div>

View file

@ -0,0 +1,16 @@
<!--导航区域开始-->
<div id="index_navi">
<ul id="menu">
<li><a href="{:U('Index/index')}" class="index_on"></a></li>
<li><a href="{:U('Role/index')}" class="role_off"></a></li>
<li><a href="{:U('Admin/index')}" class="admin_off"></a></li>
<li><a href="{:U('Store/index')}" class="store_off"></a></li>
<li><a href="{:U('Account/index')}" class="emp_off"></a></li>
<li><a href="{:U('Buy/index')}" class="buy_off"></a></li>
<li><a href="{:U('Sell/index')}" class="sell_off"></a></li>
<li><a href="{:U('Goods/index')}" class="warehouse_off"></a></li>
<li><a href="{:U('User/info')}" class="information_off"></a></li>
<li><a href="{:U('User/pwd')}" class="password_off"></a></li>
</ul>
</div>

View file

@ -0,0 +1 @@

View file

@ -0,0 +1,17 @@
<?php
namespace Home\Widget;
use Think\Controller;
class MenuWidget extends Controller {
//菜单
public function menu(){
return $this->fetch('Widget:menu');
}
//商品
public function goods(){
return $this->fetch('Widget:goods');
}
}

View file

@ -0,0 +1 @@

1
Application/README.md Normal file
View file

@ -0,0 +1 @@
项目目录

View file

@ -0,0 +1,429 @@
<?php if (!defined('THINK_PATH')) exit();?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>WMS-仓储管理系统</title>
<link type="text/css" rel="stylesheet" media="all" href="/wms/Public/styles/global.css" />
<link type="text/css" rel="stylesheet" media="all" href="/wms/Public/styles/global_color.css" />
<script src="/wms/Public/js/jquery-1.9.1.min.js"></script>
<script src="/wms/Public/layer/layer.js"></script>
<script src="/wms/Public/js/user.js"></script>
</head>
<body>
<!--Logo区域开始-->
<div id="header">
<img src="/wms/Public/images/logo.png" alt="logo" class="left"/>
<span style="font-weight:bold;">Hi!</span>
<span style="color:white;font-weight:bold;"><?php echo ($infos["nickname"]); ?></span>
<a href="<?php echo U('Login/loginout');?>" >[退出]</a>
</div>
<!--Logo区域结束-->
<!--导航区域开始-->
<div id="navi">
<ul id="menu">
<li><a href="<?php echo U('Index/index');?>" class="index_off"></a></li>
<li><a href="<?php echo U('Role/index');?>" class="role_off"></a></li>
<li><a href="<?php echo U('Admin/index');?>" class="admin_off"></a></li>
<li><a href="<?php echo U('Store/index');?>" class="store_off"></a></li>
<li><a href="<?php echo U('Account/index');?>" class="emp_off"></a></li>
<li><a href="<?php echo U('Buy/index');?>" class="buy_off"></a></li>
<li><a href="<?php echo U('Sell/index');?>" class="sell_off"></a></li>
<li><a href="<?php echo U('Goods/index');?>" class="warehouse_off"></a></li>
<li><a href="<?php echo U('User/info');?>" class="information_off"></a></li>
<li><a href="<?php echo U('User/pwd');?>" class="password_off"></a></li>
</ul>
</div>
<!--导航区域结束-->
<?php echo jumps($infos['authority'],CONTROLLER_NAME);?>
<!--主要区域开始-->
<div id="main">
<form action="/wms/index.php/Goods/add" method="post" class="main_form">
<div class="text_info clearfix"><span>编号:</span></div>
<div class="input_info">
<input type="text" class="width200" name='sn'/>
<span class="required">*</span>
<div class="validate_msg_medium">不能为空且为20长度的字母、数字和汉字的组合</div>
</div>
<div class="text_info clearfix"><span>商品名称:</span></div>
<div class="input_info">
<input type="text" class="width200" name='name'/>
<span class="required">*</span>
<div class="validate_msg_medium">不能为空且为20长度的字母、数字和汉字的组合</div>
</div>
<input type="button" value="增加属性" class="btn_add" onclick="location.href='/wms/index.php/Attribute/add';" />
<div class="text_info clearfix"><span>所属门店:</span></div>
<div class="input_info">
<select name="store_id">
<!--分类-->
<?php if(is_array($store)): $i = 0; $__LIST__ = $store;if( count($__LIST__)==0 ) : echo "" ;else: foreach($__LIST__ as $key=>$vo): $mod = ($i % 2 );++$i;?><option value="<?php echo ($vo["id"]); ?>"><?php echo ($vo["name"]); ?></option><?php endforeach; endif; else: echo "" ;endif; ?>
</select>
<input type="button" value="增加" class="btn_add" onclick="location.href='<?php echo U('Brand/add');?>';" />
</div>
<div class="text_info clearfix"><span>商品品牌:</span></div>
<div class="input_info">
<select name="brand_id">
<!--分类-->
<?php if(is_array($brand)): $i = 0; $__LIST__ = $brand;if( count($__LIST__)==0 ) : echo "" ;else: foreach($__LIST__ as $key=>$vo): $mod = ($i % 2 );++$i;?><option value="<?php echo ($vo["id"]); ?>"><?php echo ($vo["name"]); ?></option><?php endforeach; endif; else: echo "" ;endif; ?>
</select>
<input type="button" value="增加" class="btn_add" onclick="location.href='<?php echo U('Brand/add');?>';" />
</div>
<div class="text_info clearfix"><span>商品类型:</span></div>
<div class="input_info" id="as">
<select name="category_id" id="category_id" onchange="get_attr(this)" >
<!--遍历类型-->
<?php if(is_array($category)): $i = 0; $__LIST__ = $category;if( count($__LIST__)==0 ) : echo "" ;else: foreach($__LIST__ as $key=>$vo): $mod = ($i % 2 );++$i;?><option value="<?php echo ($vo["id"]); ?>" ><?php echo ($vo["name"]); ?></option><?php endforeach; endif; else: echo "" ;endif; ?>
</select>
<span class="required">
<input type="button" value="增加" class="btn_add" onclick="location.href='<?php echo U('Category/add');?>';" />
</span>
<div class="validate_msg_tiny">至少选择一个类型</div>
</div>
<div class="button_info clearfix">
<?php echo W('Menu/goods');?>
</div>
<div class="button_info clearfix">
<input type="button" value="保存" class="btn_save" onclick="send()" />
<input type="button" value="取消" class="btn_save" />
</div>
</form>
</div>
<!--主要区域结束-->
<style type="text/css">
.l-text{
width: 100px;
}
.li_width label input{
position: relative;
top:10px;
}
</style>
<script type="text/javascript">
$(function(){
//点击之后的图标
$('.warehouse_off').addClass('warehouse_on').removeClass('warehouse_off');
});
</script>
<script type="text/javascript">
function send(){
$.ajax({
url: '/wms/index.php/Goods/add',
type: 'post',
dataType:'json',
data: $(".main_form").serializeArray(),
success: function(data) {
// console.log(data);
//判断是否添加成功!
if(data.status==0){
layer.msg(data.info,{icon: 5});
}else{
layer.msg(data.info,{icon: 6});
//延迟跳转
setTimeout(function () {
location.href = "<?php echo U('Goods/index');?>";
}, <?php echo C('AJAX_TIME');?>);
}
}
});
}
</script>
<script type="text/javascript">
$(function(){
$('#category_id').change();
});
function get_attr(obj){
var isa=jQuery("#category_id option:selected").val();
$('.afters').remove();
$('.div_contentlist').html('');
$.get('/wms/index.php/Goods/get_attr/id/'+isa, function(data){
// console.log(data);
//第一层遍历
$.each( data, function(index, value)
{
content = (value.content).split(",");
//console.log(value.id);
//下拉框
var option='';
$.each( content, function(k, v)
{
if( value.type=='select' ){
option+="<option value=' "+v+" ' >"+v+"</option>"
}
});
var checkedstrat='<ul class="Father_Title"><li>'+value.name+'</li></ul> <ul class="Father_Item'+index+'">';
var checked_end='</ul><br/><br/><br/><br/>';
var check='';
$.each( content, function(k, v)
{
if( value.type=='checkbox' ){
// console.log(value.name);
check+=' <li class="li_width"><label><input id="Checkbox'+value.id+k+'" type="checkbox" class="chcBox_Width" value="'+v+'" />'+v+'<span class="li_empty" ></span></label></li> ';
}
});
//下拉框结束
if( value.type == 'select' ){
var str="<div class='text_info clearfix afters'><span>"+value.name+"</span></div><div class='input_info afters'> <select name='attrbute_id["+value.id+"]' >"+ option +"</select> <span class='required'></span><div class='validate_msg_tiny'>至少选择一个</div></div> ";
$('#as').after(str);
}else if(value.type == 'text'){
var str="<div class='text_info clearfix afters'><span>"+value.name+"</span></div><div class='input_info afters'> <input type='text' name='attrbute_id["+value.id+"]' /> <span class='required'></span><div class='validate_msg_tiny'>至少选择一个类型</div></div> ";
$('#as').after(str);
}else if(value.type == 'date'){
var str="<div class='text_info clearfix afters'><span>"+value.name+"</span></div><div class='input_info afters'> <input type='date' name='attrbute_id["+value.id+"]' /> <span class='required'></span><div class='validate_msg_tiny'>请填写</div></div> ";
$('#as').after(str);
}else if(value.type == 'checkbox'){
var str=checkedstrat+check+checked_end;
$('.div_contentlist').append(str);
$(".div_contentlist label").bind("change", function () {
step.Creat_Table();
});
var step = {
//SKU信息组合
Creat_Table: function () {
step.hebingFunction();
var SKUObj = $(".Father_Title");
//var skuCount = SKUObj.length;//
var arrayTile = new Array();//标题组数
var arrayInfor = new Array();//盛放每组选中的CheckBox值的对象
var arrayColumn = new Array();//指定列,用来合并哪些列
var bCheck = true;//是否全选
var columnIndex = 0;
$.each(SKUObj, function (i, item){
arrayColumn.push(columnIndex);
columnIndex++;
arrayTile.push(SKUObj.find("li").eq(i).html().replace("", ""));
var itemName = "Father_Item" + i;
//选中的CHeckBox取值
var order = new Array();
$("." + itemName + " input[type=checkbox]:checked").each(function (){
order.push($(this).val());
});
arrayInfor.push(order);
if (order.join() == ""){
bCheck = false;
}
//var skuValue = SKUObj.find("li").eq(index).html();
});
//开始创建Table表
if (bCheck == true) {
var RowsCount = 0;
$("#createTable").html("");
var table = $("<table id=\"process\" border=\"1\" cellpadding=\"1\" cellspacing=\"0\" style=\"width:100%;padding:5px;\"></table>");
table.appendTo($("#createTable"));
var thead = $("<thead></thead>");
thead.appendTo(table);
var trHead = $("<tr></tr>");
trHead.appendTo(thead);
//创建表头
$.each(arrayTile, function (index, item) {
var td = $("<th>" + item + "</th>");
td.appendTo(trHead);
});
// var itemColumHead = $("<th style=\"width:70px;\">价格</th><th style=\"width:70px;\">库存</th> ");
var itemColumHead = $("<th style=\"width:70px;\">价格</th><th style=\"width:70px;\">库存</th> ");
itemColumHead.appendTo(trHead);
// var itemColumHead2 = $("<td >商家编码</td><td >商品条形码</td>");
// itemColumHead2.appendTo(trHead);
var tbody = $("<tbody></tbody>");
tbody.appendTo(table);
////生成组合
var zuheDate = step.doExchange(arrayInfor);
if (zuheDate.length > 0) {
//创建行
$.each(zuheDate, function (index, item) {
var td_array = item.split(",");
var tr = $("<tr></tr>");
tr.appendTo(tbody);
$.each(td_array, function (i, values) {
var td = $("<td>" + values + "</td>");
td.appendTo(tr);
// console.log( values );
});
// console.log(item);
var td1 = $("<td > <input name=\"spec_item[]\" class=\"l-text\" type=\"hidden\" value=\""+item+" \" > <input name=\"price[]\" class=\"l-text\" type=\"text\" value=\"\" ></td>" );
td1.appendTo(tr);
var td2 = $("<td > <input name=\"count[]\" class=\"l-text\" type=\"text\" value=\"\"></td>");
td2.appendTo(tr);
//var td3 = $("<td ><input name=\"Txt_NumberSon\" class=\"l-text\" type=\"text\" value=\"\"></td>");
//td3.appendTo(tr);
//var td4 = $("<td ><input name=\"Txt_SnSon\" class=\"l-text\" type=\"text\" value=\"\"></td>");
//td4.appendTo(tr);
});
}
//结束创建Table表
arrayColumn.pop();//删除数组中最后一项
//合并单元格
$(table).mergeCell({
// 目前只有cols这么一个配置项, 用数组表示列的索引,从0开始
cols: arrayColumn
});
} else{
//未全选中,清除表格
document.getElementById('createTable').innerHTML="";
}
},//合并行
hebingFunction: function () {
$.fn.mergeCell = function (options) {
return this.each(function () {
var cols = options.cols;
for (var i = cols.length - 1; cols[i] != undefined; i--) {
// fixbug console调试
// console.debug(cols[i]);
mergeCell($(this), cols[i]);
}
dispose($(this));
});
};
function mergeCell($table, colIndex) {
$table.data('col-content', ''); // 存放单元格内容
$table.data('col-rowspan', 1); // 存放计算的rowspan值 默认为1
$table.data('col-td', $()); // 存放发现的第一个与前一行比较结果不同td(jQuery封装过的), 默认一个"空"的jquery对象
$table.data('trNum', $('tbody tr', $table).length); // 要处理表格的总行数, 用于最后一行做特殊处理时进行判断之用
// 进行"扫面"处理 关键是定位col-td, 和其对应的rowspan
$('tbody tr', $table).each(function (index) {
// td:eq中的colIndex即列索引
var $td = $('td:eq(' + colIndex + ')', this);
// 取出单元格的当前内容
var currentContent = $td.html();
// 第一次时走此分支
if ($table.data('col-content') == '') {
$table.data('col-content', currentContent);
$table.data('col-td', $td);
} else {
// 上一行与当前行内容相同
if ($table.data('col-content') == currentContent) {
// 上一行与当前行内容相同则col-rowspan累加, 保存新值
var rowspan = $table.data('col-rowspan') + 1;
$table.data('col-rowspan', rowspan);
// 值得注意的是 如果用了$td.remove()就会对其他列的处理造成影响
$td.hide();
// 最后一行的情况比较特殊一点
// 比如最后2行 td中的内容是一样的, 那么到最后一行就应该把此时的col-td里保存的td设置rowspan
if (++index == $table.data('trNum'))
$table.data('col-td').attr('rowspan', $table.data('col-rowspan'));
} else { // 上一行与当前行内容不同
// col-rowspan默认为1, 如果统计出的col-rowspan没有变化, 不处理
if ($table.data('col-rowspan') != 1) {
$table.data('col-td').attr('rowspan', $table.data('col-rowspan'));
}
// 保存第一次出现不同内容的td, 和其内容, 重置col-rowspan
$table.data('col-td', $td);
$table.data('col-content', $td.html());
$table.data('col-rowspan', 1);
}
}
});
}
// 同样是个private函数 清理内存之用
function dispose($table) {
$table.removeData();
}
},
//组合数组
doExchange: function (doubleArrays) {
var len = doubleArrays.length;
if (len >= 2) {
var arr1 = doubleArrays[0];
var arr2 = doubleArrays[1];
var len1 = doubleArrays[0].length;
var len2 = doubleArrays[1].length;
var newlen = len1 * len2;
var temp = new Array(newlen);
var index = 0;
for (var i = 0; i < len1; i++) {
for (var j = 0; j < len2; j++) {
temp[index] = arr1[i] + "," + arr2[j];
index++;
}
}
var newArray = new Array(len - 1);
newArray[0] = temp;
if (len > 2) {
var _count = 1;
for (var i = 2; i < len; i++) {
newArray[_count] = doubleArrays[i];
_count++;
}
}
//console.log(newArray);
return step.doExchange(newArray);
}
else {
return doubleArrays[0];
}
}
}
return step;
/*******************************************************************/
}
});
});
// layer.msg(isa);
}
</script>
<div id="footer">
<p>[ 源自技昂专注WMSTMSPOD的解决方案 ]</p>
<p>版权所有(C)苏州技昂信息技术有限公司 </p>
</div>
</body>
</html>

View file

@ -0,0 +1,16 @@
<?php if (!defined('THINK_PATH')) exit();?>
<!--导航区域开始-->
<div id="index_navi">
<ul id="menu">
<li><a href="<?php echo U('Index/index');?>" class="index_on"></a></li>
<li><a href="<?php echo U('Role/index');?>" class="role_off"></a></li>
<li><a href="<?php echo U('Admin/index');?>" class="admin_off"></a></li>
<li><a href="<?php echo U('Store/index');?>" class="store_off"></a></li>
<li><a href="<?php echo U('Account/index');?>" class="emp_off"></a></li>
<li><a href="<?php echo U('Buy/index');?>" class="buy_off"></a></li>
<li><a href="<?php echo U('Sell/index');?>" class="sell_off"></a></li>
<li><a href="<?php echo U('Goods/index');?>" class="warehouse_off"></a></li>
<li><a href="<?php echo U('User/info');?>" class="information_off"></a></li>
<li><a href="<?php echo U('User/pwd');?>" class="password_off"></a></li>
</ul>
</div>

View file

@ -0,0 +1,143 @@
<?php if (!defined('THINK_PATH')) exit();?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>WMS-仓储管理系统</title>
<link type="text/css" rel="stylesheet" media="all" href="/wms/Public/styles/global.css" />
<link type="text/css" rel="stylesheet" media="all" href="/wms/Public/styles/global_color.css" />
<script src="/wms/Public/js/jquery-1.9.1.min.js"></script>
<script src="/wms/Public/layer/layer.js"></script>
<script src="/wms/Public/js/user.js"></script>
</head>
<body>
<!--Logo区域开始-->
<div id="header">
<img src="/wms/Public/images/logo.png" alt="logo" class="left"/>
<span style="font-weight:bold;">Hi!</span>
<span style="color:white;font-weight:bold;"><?php echo ($infos["nickname"]); ?></span>
<a href="<?php echo U('Login/loginout');?>" >[退出]</a>
</div>
<!--Logo区域结束-->
<!--导航区域开始-->
<div id="navi">
<ul id="menu">
<li><a href="<?php echo U('Index/index');?>" class="index_off"></a></li>
<li><a href="<?php echo U('Role/index');?>" class="role_off"></a></li>
<li><a href="<?php echo U('Admin/index');?>" class="admin_off"></a></li>
<li><a href="<?php echo U('Store/index');?>" class="store_off"></a></li>
<li><a href="<?php echo U('Account/index');?>" class="emp_off"></a></li>
<li><a href="<?php echo U('Buy/index');?>" class="buy_off"></a></li>
<li><a href="<?php echo U('Sell/index');?>" class="sell_off"></a></li>
<li><a href="<?php echo U('Goods/index');?>" class="warehouse_off"></a></li>
<li><a href="<?php echo U('User/info');?>" class="information_off"></a></li>
<li><a href="<?php echo U('User/pwd');?>" class="password_off"></a></li>
</ul>
</div>
<!--导航区域结束-->
<?php echo jumps($infos['authority'],CONTROLLER_NAME);?>
<script language="javascript" type="text/javascript">
function deleteRole() {
var r = window.confirm("确定要删除此角色吗?");
document.getElementById("operate_result_info").style.display = "block";
}
</script>
<!--主要区域开始-->
<div id="main">
<form action="" method="">
<!--查询-->
<div class="search_add">
<input type="button" value="增加" class="btn_add" onclick="location.href='<?php echo U('Role/add');?>';" />
</div>
<!--删除的操作提示-->
<div id="operate_result_info" class="operate_success">
<img src="/wms/Public/images/close.png" onclick="this.parentNode.style.display='none';" />
删除成功!
</div> <!--删除错误!该角色被使用,不能删除。-->
<!--数据区域:用表格展示数据-->
<div id="data">
<table id="datalist">
<tr>
<th>角色 ID</th>
<th>角色名称</th>
<th class="width600">拥有的权限</th>
<th class="td_modi"></th>
</tr>
<!--遍历数据 start-->
<?php if(is_array($res['res'])): $i = 0; $__LIST__ = $res['res'];if( count($__LIST__)==0 ) : echo "$empty" ;else: foreach($__LIST__ as $key=>$vo): $mod = ($i % 2 );++$i;?><tr>
<td><?php echo ($vo["id"]); ?></td>
<td><?php echo ($vo["role_name"]); ?></td>
<td><?php echo ($vo["names"]); ?></td>
<td>
<input type="button" value="修改" class="btn_modify" onclick="location.href='/wms/index.php/Role/edit/id/<?php echo ($vo["id"]); ?>';"/>
<input type="button" value="删除" class="btn_delete" onclick="deletes('/wms/index.php/Role/delete/id/<?php echo ($vo["id"]); ?>'); " />
</td>
</tr><?php endforeach; endif; else: echo "$empty" ;endif; ?>
<!--遍历数据 end-->
</table>
</div>
<!--分页-->
<div id="pages">
<?php echo ($res['page']); ?>
</div>
</form>
</div>
<!--主要区域结束-->
<script type="text/javascript">
$(function(){
//点击之后的图标
$('.role_off').addClass('role_on').removeClass('role_off');
});
</script>
<script type="text/javascript">
//删除
function deletes(obj){
layer.confirm('你确定真的要删除此角色?', {icon: 3, title:'提示'}, function(index){
if(index){
$.get(obj, function(data){
//判断是否删除成功!
if(data.status==0){
layer.msg(data.info,{icon: 5});
}else{
layer.msg(data.info,{icon: 6});
//延迟跳转
setTimeout(function () {
location.href = "<?php echo U('Sell/index');?>";
}, <?php echo C('AJAX_TIME');?>);
}
});
}
layer.close(index);
});
}
</script>
<div id="footer">
<p>[ 源自技昂专注WMSTMSPOD的解决方案 ]</p>
<p>版权所有(C)苏州技昂信息技术有限公司 </p>
</div>
</body>
</html>

View file

@ -0,0 +1,12 @@
<?php if (!defined('THINK_PATH')) exit();?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>WMS-仓储管理系统</title>
<link type="text/css" rel="stylesheet" media="all" href="/wms/Public/styles/global.css" />
<link type="text/css" rel="stylesheet" media="all" href="/wms/Public/styles/global_color.css" />
</head>
<body class="index">
<?php echo W('Menu/Menu');?>
</body>
</html>

View file

@ -0,0 +1,291 @@
<?php if (!defined('THINK_PATH')) exit();?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>WMS-仓储管理系统</title>
<link type="text/css" rel="stylesheet" media="all" href="/wms/Public/styles/global.css" />
<link type="text/css" rel="stylesheet" media="all" href="/wms/Public/styles/global_color.css" />
<script src="/wms/Public/js/jquery-1.9.1.min.js"></script>
<script src="/wms/Public/layer/layer.js"></script>
<script src="/wms/Public/js/user.js"></script>
</head>
<body>
<!--Logo区域开始-->
<div id="header">
<img src="/wms/Public/images/logo.png" alt="logo" class="left"/>
<span style="font-weight:bold;">Hi!</span>
<span style="color:white;font-weight:bold;"><?php echo ($infos["nickname"]); ?></span>
<a href="<?php echo U('Login/loginout');?>" >[退出]</a>
</div>
<!--Logo区域结束-->
<!--导航区域开始-->
<div id="navi">
<ul id="menu">
<li><a href="<?php echo U('Index/index');?>" class="index_off"></a></li>
<li><a href="<?php echo U('Role/index');?>" class="role_off"></a></li>
<li><a href="<?php echo U('Admin/index');?>" class="admin_off"></a></li>
<li><a href="<?php echo U('Store/index');?>" class="store_off"></a></li>
<li><a href="<?php echo U('Account/index');?>" class="emp_off"></a></li>
<li><a href="<?php echo U('Buy/index');?>" class="buy_off"></a></li>
<li><a href="<?php echo U('Sell/index');?>" class="sell_off"></a></li>
<li><a href="<?php echo U('Goods/index');?>" class="warehouse_off"></a></li>
<li><a href="<?php echo U('User/info');?>" class="information_off"></a></li>
<li><a href="<?php echo U('User/pwd');?>" class="password_off"></a></li>
</ul>
</div>
<!--导航区域结束-->
<?php echo jumps($infos['authority'],CONTROLLER_NAME);?>
<!--主要区域开始-->
<div id="main">
<form action="/wms/index.php/Account/index.html" method="get" id="search">
<!--查询-->
<div class="search_add">
<div>员工编号:<input type="text" class="text_search width110" value="<?php echo I('get.no');?>" name='no'/></div>
<div>姓名:<input type="text" class="width70 text_search" value="<?php echo I('get.nickname');?>" name='nickname'/></div>
<div>账号:<input type="text" class="width70 text_search" value="<?php echo I('get.username');?>" name='username'/></div>
<div>
状态:
<select class="select_search" name='status' id='status'>
<option value="">全部</option>
<option value="0" <?php if( I('status')=='0' ){echo 'selected';} ?>>正常</option>
<option value="1" <?php if( I('status')=='1' ){echo 'selected';} ?>>禁止</option>
</select>
</div>
<div>
职位:
<select class="select_search" name='position_name' id='position'>
<option value="">全部</option>
<?php if(is_array($position)): $i = 0; $__LIST__ = $position;if( count($__LIST__)==0 ) : echo "" ;else: foreach($__LIST__ as $key=>$vo): $mod = ($i % 2 );++$i;?><option value="<?php echo ($vo["name"]); ?>" <?php if( I('position_name')==$vo['name'] ){echo 'selected';} ?>
><?php echo ($vo["name"]); ?></option><?php endforeach; endif; else: echo "" ;endif; ?>
</select>
</div>
<div>
<input type="button" value="搜索" class="btn_search" id="btn_search" onclick="search()"/>
</div>
<input type="button" value="增加" class="btn_add" onclick="location.href='/wms/index.php/Account/add';" />
<!--第二行-->
<div style='margin:5px 0;'>
<div>
门店:
<select class="select_search" name='store_name' >
<option value="">全部</option>
<?php if(is_array($store)): $i = 0; $__LIST__ = $store;if( count($__LIST__)==0 ) : echo "" ;else: foreach($__LIST__ as $key=>$vo): $mod = ($i % 2 );++$i;?><option value="<?php echo ($vo["name"]); ?>" <?php if( I('store_name')==$vo['name'] ){echo 'selected';} ?>
><?php echo ($vo["name"]); ?></option><?php endforeach; endif; else: echo "" ;endif; ?>
</select>
</div>
<div>
排序:
<select class="select_search" name='order'>
<option value="a.id asc" <?php if( I('get.order')=='a.id asc' ){ echo 'selected';} ?> > ↑ 默认 </option>
<option value="a.id desc" <?php if( I('get.order')=='a.id desc' ){ echo 'selected';} ?> > ↓ 主键从高到低 </option>
<option value="create_time asc" <?php if( I('get.order')=='create_time asc' ){ echo 'selected';} ?> > ↑ 日期从低到高 </option>
<option value="create_time desc" <?php if( I('get.order')=='create_time desc' ){ echo 'selected';} ?> > ↓ 日期从高到低 </option>
</select>
</div>
</div>
<!--第二行结束-->
</div>
</form>
<!--数据区域:用表格展示数据 表格列表-->
<div id="data">
<table id="datalist">
<tr>
<th>账号ID</th>
<th>姓名</th>
<th>员工编号</th>
<th>账号</th>
<th>状态</th>
<th>职位</th>
<th>门店</th>
<th>创建日期</th>
<th class="width200">操作</th>
</tr>
<!--开始遍历数据-->
<?php if(is_array($res['res'])): $i = 0; $__LIST__ = $res['res'];if( count($__LIST__)==0 ) : echo "$empty" ;else: foreach($__LIST__ as $key=>$vo): $mod = ($i % 2 );++$i;?><tr>
<td><?php echo ($vo["id"]); ?></td>
<td><a href="/wms/index.php/Account/detail/id/<?php echo ($vo["id"]); ?>"><?php echo ($vo["nickname"]); ?></a></td>
<td><?php echo ($vo["no"]); ?></td>
<td><?php echo ($vo["username"]); ?></td>
<td>
<?php if($vo['status']==0){ echo '正常'; }else if($vo['status']==1){ echo '禁止'; }else if($vo['status']==2){ echo '删除'; } ?>
</td>
<td>
<a href="/wms/index.php/Account/index/position_name/<?php echo ($vo["position_name"]); ?>/"> <?php echo ($vo["position_name"]); ?> </a>
</td>
<td><?php echo ($vo["store_name"]); ?></td>
<td><?php echo date('Y-m-d',$vo['create_time']);?></td>
<td class="td_modi">
<?php if($vo['status'] != 2): if($vo['status'] == 0): ?><input type="button" value="禁止" class="btn_pause" onclick="set_status( '/wms/index.php/Account/status/id/<?php echo ($vo["id"]); ?>/status/1' );" />
<?php else: ?>
<input type="button" value="正常" class="btn_start" onclick="set_status( '/wms/index.php/Account/status/id/<?php echo ($vo["id"]); ?>/status/0' );" /><?php endif; ?>
<input type="button" value="修改" class="btn_modify" onclick=" location.href='/wms/index.php/Account/edit/id/<?php echo ($vo["id"]); ?>'; " />
<input type="button" value="删除" class="btn_delete" onclick=" deletes( '/wms/index.php/Account/delete/id/<?php echo ($vo["id"]); ?>' ); " />
<?php else: endif; ?>
</td>
</tr><?php endforeach; endif; else: echo "$empty" ;endif; ?>
<!--遍历结束-->
</table>
<p>操作说明:<br />
1、创建则开通,记载创建时间;<br />
2、禁止后,则无法登陆;<br />
3、重新开通后,则可以正常使用;<br />
4、删除后,标示为删除,不能再开通、修改、删除;<br />
</div>
<!--分页-->
<div id="pages">
<?php echo ($res['page']); ?>
</div>
</div>
<!--主要区域结束-->
<script type="text/javascript">
function search(){
layer.load(2); //加载
setTimeout(function(){
$('#search').submit();
},<?php echo C('SEARCH_TIME');?>);
}
//状态
$(function(){
$('#status').change(function(){
$('#search').submit();
});
});
//职位
$(function(){
$('#position').change(function(){
$('#search').submit();
});
});
$(function(){
$('select').change(function(){
$('#search').submit();
});
});
//键盘事件
$(document).keydown(function(event){
if(event.keyCode == 13){
// alert(event.keyCode);
search();
}
});
//禁止 开通
function set_status(obj){
layer.confirm('你确定真的要修改用户状态吗?', {icon: 0, title:'提示'}, function(index){
if(index){
$.ajax({
type: "GET",
url: obj,
success: function(data){
//判断修改加成功!
if(data.status==0){
layer.msg(data.info,{icon: 5});
}else{
layer.msg(data.info,{icon: 6});
//延迟跳转
setTimeout(function () {
location.href = "<?php echo U('Account/index');?>";
}, <?php echo C('AJAX_TIME');?>);
}
}
});
// layer.msg(obj);
}
layer.close(index);
});
}
//删除
function deletes(obj){
layer.confirm('你确定真的要删除此用户?', {icon: 3, title:'提示'}, function(index){
if(index){
$.get(obj, function(data){
//判断是否删除成功!
if(data.status==0){
layer.msg(data.info,{icon: 5});
}else{
layer.msg(data.info,{icon: 6});
//延迟跳转
setTimeout(function () {
location.href = "<?php echo U('Account/index');?>";
}, <?php echo C('AJAX_TIME');?>);
}
});
}
layer.close(index);
});
}
</script>
<style type="text/css">
.empty{
font-weight:bold;
}
</style>
<script type="text/javascript">
$(function(){
//点击之后的图标
$('.emp_off').addClass('emp_on').removeClass('emp_off');
});
</script>
<div id="footer">
<p>[ 源自技昂专注WMSTMSPOD的解决方案 ]</p>
<p>版权所有(C)苏州技昂信息技术有限公司 </p>
</div>
</body>
</html>

View file

@ -0,0 +1,466 @@
<?php if (!defined('THINK_PATH')) exit();?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>WMS-仓储管理系统</title>
<link type="text/css" rel="stylesheet" media="all" href="/wms/Public/styles/global.css" />
<link type="text/css" rel="stylesheet" media="all" href="/wms/Public/styles/global_color.css" />
<script src="/wms/Public/js/jquery-1.9.1.min.js"></script>
<script src="/wms/Public/layer/layer.js"></script>
<script src="/wms/Public/js/user.js"></script>
</head>
<body>
<!--Logo区域开始-->
<div id="header">
<img src="/wms/Public/images/logo.png" alt="logo" class="left"/>
<span style="font-weight:bold;">Hi!</span>
<span style="color:white;font-weight:bold;"><?php echo ($infos["nickname"]); ?></span>
<a href="<?php echo U('Login/loginout');?>" >[退出]</a>
</div>
<!--Logo区域结束-->
<!--导航区域开始-->
<div id="navi">
<ul id="menu">
<li><a href="<?php echo U('Index/index');?>" class="index_off"></a></li>
<li><a href="<?php echo U('Role/index');?>" class="role_off"></a></li>
<li><a href="<?php echo U('Admin/index');?>" class="admin_off"></a></li>
<li><a href="<?php echo U('Store/index');?>" class="store_off"></a></li>
<li><a href="<?php echo U('Account/index');?>" class="emp_off"></a></li>
<li><a href="<?php echo U('Buy/index');?>" class="buy_off"></a></li>
<li><a href="<?php echo U('Sell/index');?>" class="sell_off"></a></li>
<li><a href="<?php echo U('Goods/index');?>" class="warehouse_off"></a></li>
<li><a href="<?php echo U('User/info');?>" class="information_off"></a></li>
<li><a href="<?php echo U('User/pwd');?>" class="password_off"></a></li>
</ul>
</div>
<!--导航区域结束-->
<!--主要区域开始-->
<div id="main">
<form action="/wms/index.php/Goods/edit/id/1" method="post" class="main_form">
<input type="hidden" name="id" value='<?php echo ($info["id"]); ?>' />
<div class="text_info clearfix"><span>编号:</span></div>
<div class="input_info">
<input type="text" class="width200" name='sn' value='<?php echo ($info["sn"]); ?>'/>
<span class="required">*</span>
<div class="validate_msg_medium">不能为空且为20长度的字母、数字和汉字的组合</div>
</div>
<div class="text_info clearfix"><span>商品名称:</span></div>
<div class="input_info">
<input type="text" class="width200" name='name' value='<?php echo ($info["name"]); ?>'/>
<span class="required">*</span>
<div class="validate_msg_medium">不能为空且为20长度的字母、数字和汉字的组合</div>
</div>
<input type="button" value="增加属性" class="btn_add" onclick="location.href='/wms/index.php/Attribute/add';" />
<div class="text_info clearfix"><span>所属门店:</span></div>
<div class="input_info">
<select name="store_id">
<!--分类-->
<?php if(is_array($store)): $i = 0; $__LIST__ = $store;if( count($__LIST__)==0 ) : echo "" ;else: foreach($__LIST__ as $key=>$vo): $mod = ($i % 2 );++$i;?><option value="<?php echo ($vo["id"]); ?>"
<?php if($info['store_id']==$vo['id']){ echo 'selected'; } ?>
><?php echo ($vo["name"]); ?></option><?php endforeach; endif; else: echo "" ;endif; ?>
</select>
<input type="button" value="增加" class="btn_add" onclick="location.href='<?php echo U('Brand/add');?>';" />
</div>
<div class="text_info clearfix"><span>商品品牌:</span></div>
<div class="input_info">
<select name="brand_id">
<!--品牌分类-->
<?php if(is_array($brand)): $i = 0; $__LIST__ = $brand;if( count($__LIST__)==0 ) : echo "" ;else: foreach($__LIST__ as $key=>$vo): $mod = ($i % 2 );++$i;?><option value="<?php echo ($vo["id"]); ?>"
<?php if($info['brand_id']==$vo['id']){ echo 'selected'; } ?>
><?php echo ($vo["name"]); ?></option><?php endforeach; endif; else: echo "" ;endif; ?>
</select>
<input type="button" value="增加" class="btn_add" onclick="location.href='<?php echo U('Brand/add');?>';" />
</div>
<div class="text_info clearfix"><span>商品类型:</span></div>
<div class="input_info" id="as">
<select name="category_id" id="category_id" onchange="get_attr(this)" >
<!--遍历类型-->
<?php if(is_array($category)): $i = 0; $__LIST__ = $category;if( count($__LIST__)==0 ) : echo "" ;else: foreach($__LIST__ as $key=>$vo): $mod = ($i % 2 );++$i;?><option value="<?php echo ($vo["id"]); ?>"
<?php if($info['category_id']==$vo['id']){ echo 'selected'; } ?>
><?php echo ($vo["name"]); ?></option><?php endforeach; endif; else: echo "" ;endif; ?>
</select>
<span class="required">
<input type="button" value="增加" class="btn_add" onclick="location.href='<?php echo U('Category/add');?>';" />
</span>
<div class="validate_msg_tiny">至少选择一个类型</div>
</div>
<div class="button_info clearfix">
<?php echo W('Menu/goods');?>
</div>
<div class="button_info clearfix">
<input type="button" value="保存" class="btn_save" onclick="send()" />
<input type="button" value="取消" class="btn_save" />
</div>
</form>
</div>
<!--主要区域结束-->
<style type="text/css">
.l-text{
width: 100px;
}
.li_width label input{
position: relative;
top:10px;
}
</style>
<script type="text/javascript">
$(function(){
//点击之后的图标
$('.buy_off').addClass('buy_on').removeClass('buy_off');
});
</script>
<script type="text/javascript">
function send(){
$.ajax({
url: '/wms/index.php/Goods/edit/id/1',
type: 'post',
dataType:'json',
data: $(".main_form").serializeArray(),
success: function(data) {
// console.log(data);
//判断是否添加成功!
if(data.status==0){
layer.msg(data.info,{icon: 5});
}else{
layer.msg(data.info,{icon: 6});
//延迟跳转
setTimeout(function () {
location.href = "<?php echo U('Goods/index');?>";
}, <?php echo C('AJAX_TIME');?>);
}
}
});
}
</script>
<script type="text/javascript">
$(function(){
$('#category_id').change();
});
function get_attr(obj){
var isa=jQuery("#category_id option:selected").val();
$('.afters').remove();
$('.div_contentlist').html('');
$.get('/wms/index.php/Goods/get_attr/id/'+isa, function(data){
// console.log(data);
//第一层遍历
$.each( data, function(index, value)
{
content = (value.content).split(",");
//console.log(value.id);
//下拉框
var option='';
$.each( content, function(k, v)
{
if( value.type=='select' ){
option+="<option value='"+v+"' >"+v+"</option>"
}
});
var checkedstrat='<ul class="Father_Title"><li>'+value.name+'</li></ul> <ul class="Father_Item'+index+'">';
var checked_end='</ul><br/><br/><br/><br/>';
var check='';
$.each( content, function(k, v)
{
if( value.type=='checkbox' ){
// console.log(value.name);
check+=' <li class="li_width"><label><input id="Checkbox'+value.id+k+'" type="checkbox" class="chcBox_Width" value="'+v+'" />'+v+'<span class="li_empty" ></span></label></li> ';
}
});
//下拉框结束
if( value.type == 'select' ){
var str="<div class='text_info clearfix afters'><span>"+value.name+"</span></div><div class='input_info afters'> <select name='attrbute_id["+value.id+"]' class='get_contents_"+value.id+" ' >"+ option +"</select> <span class='required'></span><div class='validate_msg_tiny'>至少选择一个</div></div> ";
$('#as').after(str);
attr('select');
}else if(value.type == 'text'){
var str="<div class='text_info clearfix afters'><span>"+value.name+"</span></div><div class='input_info afters'> <input type='text' name='attrbute_id["+value.id+"]' class='get_contents_"+value.id+" ' /> <span class='required'></span><div class='validate_msg_tiny'>至少选择一个类型</div></div> ";
$('#as').after(str);
attr('text');
}else if(value.type == 'date'){
var str="<div class='text_info clearfix afters'><span>"+value.name+"</span></div><div class='input_info afters'> <input type='date' name='attrbute_id["+value.id+"]' class='get_contents_"+value.id+" ' /> <span class='required'></span><div class='validate_msg_tiny'>请填写</div></div> ";
$('#as').after(str);
attr('date');
}else if(value.type == 'checkbox'){
var str=checkedstrat+check+checked_end;
$('.div_contentlist').append(str);
attr('checkbox');
$(".div_contentlist label").bind("change", function () {
step.Creat_Table();
});
var step = {
//SKU信息组合
Creat_Table: function () {
step.hebingFunction();
var SKUObj = $(".Father_Title");
//var skuCount = SKUObj.length;//
var arrayTile = new Array();//标题组数
var arrayInfor = new Array();//盛放每组选中的CheckBox值的对象
var arrayColumn = new Array();//指定列,用来合并哪些列
var bCheck = true;//是否全选
var columnIndex = 0;
$.each(SKUObj, function (i, item){
arrayColumn.push(columnIndex);
columnIndex++;
arrayTile.push(SKUObj.find("li").eq(i).html().replace("", ""));
var itemName = "Father_Item" + i;
//选中的CHeckBox取值
var order = new Array();
$("." + itemName + " input[type=checkbox]:checked").each(function (){
order.push($(this).val());
});
arrayInfor.push(order);
if (order.join() == ""){
bCheck = false;
}
//var skuValue = SKUObj.find("li").eq(index).html();
});
//开始创建Table表
if (bCheck == true) {
var RowsCount = 0;
$("#createTable").html("");
var table = $("<table id=\"process\" border=\"1\" cellpadding=\"1\" cellspacing=\"0\" style=\"width:100%;padding:5px;\"></table>");
table.appendTo($("#createTable"));
var thead = $("<thead></thead>");
thead.appendTo(table);
var trHead = $("<tr></tr>");
trHead.appendTo(thead);
//创建表头
$.each(arrayTile, function (index, item) {
var td = $("<th>" + item + "</th>");
td.appendTo(trHead);
});
// var itemColumHead = $("<th style=\"width:70px;\">价格</th><th style=\"width:70px;\">库存</th> ");
var itemColumHead = $("<th style=\"width:70px;\">价格</th><th style=\"width:70px;\">库存</th> ");
itemColumHead.appendTo(trHead);
// var itemColumHead2 = $("<td >商家编码</td><td >商品条形码</td>");
// itemColumHead2.appendTo(trHead);
var tbody = $("<tbody></tbody>");
tbody.appendTo(table);
////生成组合
var zuheDate = step.doExchange(arrayInfor);
if (zuheDate.length > 0) {
//创建行
$.each(zuheDate, function (index, item) {
var td_array = item.split(",");
var tr = $("<tr></tr>");
tr.appendTo(tbody);
$.each(td_array, function (i, values) {
var td = $("<td>" + values + "</td>");
td.appendTo(tr);
// console.log( values );
});
//把php字符串赋值给js,并js转为数组
var counts="<?php echo ($info["count"]); ?>";
counts = counts.split(',');
//把php字符串赋值给js,并js转为数组
var prices="<?php echo ($info["prices"]); ?>";
prices = prices.split(',');
// console.log(index);
var td1 = $("<td > <input name=\"spec_item[]\" class=\"l-text\" type=\"hidden\" value=\""+item+" \" > <input name=\"price[]\" class=\"l-text\" type=\"text\" value=\" "+prices[index]+" \" ></td>" );
td1.appendTo(tr);
var td2 = $("<td > <input name=\"count[]\" class=\"l-text\" type=\"text\" value=\" "+counts[index]+"\"></td>");
td2.appendTo(tr);
//var td3 = $("<td ><input name=\"Txt_NumberSon\" class=\"l-text\" type=\"text\" value=\"\"></td>");
//td3.appendTo(tr);
//var td4 = $("<td ><input name=\"Txt_SnSon\" class=\"l-text\" type=\"text\" value=\"\"></td>");
//td4.appendTo(tr);
});
}
//结束创建Table表
arrayColumn.pop();//删除数组中最后一项
//合并单元格
$(table).mergeCell({
// 目前只有cols这么一个配置项, 用数组表示列的索引,从0开始
cols: arrayColumn
});
} else{
//未全选中,清除表格
document.getElementById('createTable').innerHTML="";
}
},//合并行
hebingFunction: function () {
$.fn.mergeCell = function (options) {
return this.each(function () {
var cols = options.cols;
for (var i = cols.length - 1; cols[i] != undefined; i--) {
// fixbug console调试
// console.debug(cols[i]);
mergeCell($(this), cols[i]);
}
dispose($(this));
});
};
function mergeCell($table, colIndex) {
$table.data('col-content', ''); // 存放单元格内容
$table.data('col-rowspan', 1); // 存放计算的rowspan值 默认为1
$table.data('col-td', $()); // 存放发现的第一个与前一行比较结果不同td(jQuery封装过的), 默认一个"空"的jquery对象
$table.data('trNum', $('tbody tr', $table).length); // 要处理表格的总行数, 用于最后一行做特殊处理时进行判断之用
// 进行"扫面"处理 关键是定位col-td, 和其对应的rowspan
$('tbody tr', $table).each(function (index) {
// td:eq中的colIndex即列索引
var $td = $('td:eq(' + colIndex + ')', this);
// 取出单元格的当前内容
var currentContent = $td.html();
// 第一次时走此分支
if ($table.data('col-content') == '') {
$table.data('col-content', currentContent);
$table.data('col-td', $td);
} else {
// 上一行与当前行内容相同
if ($table.data('col-content') == currentContent) {
// 上一行与当前行内容相同则col-rowspan累加, 保存新值
var rowspan = $table.data('col-rowspan') + 1;
$table.data('col-rowspan', rowspan);
// 值得注意的是 如果用了$td.remove()就会对其他列的处理造成影响
$td.hide();
// 最后一行的情况比较特殊一点
// 比如最后2行 td中的内容是一样的, 那么到最后一行就应该把此时的col-td里保存的td设置rowspan
if (++index == $table.data('trNum'))
$table.data('col-td').attr('rowspan', $table.data('col-rowspan'));
} else { // 上一行与当前行内容不同
// col-rowspan默认为1, 如果统计出的col-rowspan没有变化, 不处理
if ($table.data('col-rowspan') != 1) {
$table.data('col-td').attr('rowspan', $table.data('col-rowspan'));
}
// 保存第一次出现不同内容的td, 和其内容, 重置col-rowspan
$table.data('col-td', $td);
$table.data('col-content', $td.html());
$table.data('col-rowspan', 1);
}
}
});
}
// 同样是个private函数 清理内存之用
function dispose($table) {
$table.removeData();
}
},
//组合数组
doExchange: function (doubleArrays) {
var len = doubleArrays.length;
if (len >= 2) {
var arr1 = doubleArrays[0];
var arr2 = doubleArrays[1];
var len1 = doubleArrays[0].length;
var len2 = doubleArrays[1].length;
var newlen = len1 * len2;
var temp = new Array(newlen);
var index = 0;
for (var i = 0; i < len1; i++) {
for (var j = 0; j < len2; j++) {
temp[index] = arr1[i] + "," + arr2[j];
index++;
}
}
var newArray = new Array(len - 1);
newArray[0] = temp;
if (len > 2) {
var _count = 1;
for (var i = 2; i < len; i++) {
newArray[_count] = doubleArrays[i];
_count++;
}
}
//console.log(newArray);
return step.doExchange(newArray);
}
else {
return doubleArrays[0];
}
}
}
return step;
/*******************************************************************/
}
});
});
// layer.msg(isa);
}
</script>
<script type="text/javascript">
$(function(){
//延迟加载属性
setTimeout(function () {
$(".div_contentlist label").change();
}, 100);
});
</script>
<?php $attrbute_value=explode(":",$info['attrbute_value']); $attrbute_value=array_filter( array_unique( $attrbute_value )) ; $attrbute_id= array_values( array_filter( explode(",",$info['attrbute_id']) ) ); $attrbute_val= explode(",",$info['val']) ; $arr=array(); foreach($attrbute_value as $v){ $arr[]=explode(",",$v); } foreach($arr as $v){ foreach($v as $val){ $arrs.=$val.','; } } $attrbute_value=array_values( array_filter( explode(",",$arrs) ) ); echo "<script type='text/javascript'> function attr(obj){ if(obj=='checkbox'){ \r\n "; echo "\$(\"input\").each(function(){ \r\n"; foreach($attrbute_value as $k=>$v){ printf(" if( \$(this).val()=='%s' ) { $(this).prop(\"checked\",true); } \r\n",trim($attrbute_value[$k]) ); } echo"}); \r\n"; echo " }else if(obj=='select'){ \r\n"; foreach($attrbute_id as $k=>$v){ printf(" \$(\".get_content_%u option[value='%s'] \").prop(\"selected\",true); \r\n",trim($v),trim($attrbute_val[$k]) ); } echo " }else{ \r\n "; foreach($attrbute_id as $k=>$v){ printf(" \$(\".get_contents_%u\").val(\"%s\"); \r\n",trim($v),trim($attrbute_val[$k]) ); } echo " } }</script>"; ?>
<script type="text/javascript">
$(function(){
setTimeout(function () {
$(".l-text [name='price[]']").val('123') ;
}, 1000);
});
</script>
<div id="footer">
<p>[ 源自技昂专注WMSTMSPOD的解决方案 ]</p>
<p>版权所有(C)苏州技昂信息技术有限公司 </p>
</div>
</body>
</html>

View file

@ -0,0 +1,150 @@
<?php if (!defined('THINK_PATH')) exit();?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>WMS-仓储管理系统</title>
<link type="text/css" rel="stylesheet" media="all" href="/wms/Public/styles/global.css" />
<link type="text/css" rel="stylesheet" media="all" href="/wms/Public/styles/global_color.css" />
<script src="/wms/Public/js/jquery-1.9.1.min.js"></script>
<script src="/wms/Public/layer/layer.js"></script>
<script src="/wms/Public/js/user.js"></script>
</head>
<body>
<!--Logo区域开始-->
<div id="header">
<img src="/wms/Public/images/logo.png" alt="logo" class="left"/>
<span style="font-weight:bold;">Hi!</span>
<span style="color:white;font-weight:bold;"><?php echo ($infos["nickname"]); ?></span>
<a href="<?php echo U('Login/loginout');?>" >[退出]</a>
</div>
<!--Logo区域结束-->
<!--导航区域开始-->
<div id="navi">
<ul id="menu">
<li><a href="<?php echo U('Index/index');?>" class="index_off"></a></li>
<li><a href="<?php echo U('Role/index');?>" class="role_off"></a></li>
<li><a href="<?php echo U('Admin/index');?>" class="admin_off"></a></li>
<li><a href="<?php echo U('Store/index');?>" class="store_off"></a></li>
<li><a href="<?php echo U('Account/index');?>" class="emp_off"></a></li>
<li><a href="<?php echo U('Buy/index');?>" class="buy_off"></a></li>
<li><a href="<?php echo U('Sell/index');?>" class="sell_off"></a></li>
<li><a href="<?php echo U('Goods/index');?>" class="warehouse_off"></a></li>
<li><a href="<?php echo U('User/info');?>" class="information_off"></a></li>
<li><a href="<?php echo U('User/pwd');?>" class="password_off"></a></li>
</ul>
</div>
<!--导航区域结束-->
<!--主要区域开始-->
<div id="main">
<form action="/wms/index.php/Attribute/add" method="post" class="main_form">
<div class="text_info clearfix"><span>属性名称:</span></div>
<div class="input_info">
<input type="text" class="width200" name="name" value=''/>
<span class="required">*</span>
<div class="validate_msg_medium">不能为空且为20长度的字母、数字和汉字的组合</div>
</div>
<div class="text_info clearfix"><span>商品类型:</span></div>
<div class="input_info">
<select name="category_id">
<!--遍历类型-->
<?php if(is_array($category)): $i = 0; $__LIST__ = $category;if( count($__LIST__)==0 ) : echo "" ;else: foreach($__LIST__ as $key=>$vo): $mod = ($i % 2 );++$i;?><option value="<?php echo ($vo["id"]); ?>"><?php echo ($vo["name"]); ?></option><?php endforeach; endif; else: echo "" ;endif; ?>
</select>
<span class="required">
<input type="button" value="增加" class="btn_add" onclick="location.href='<?php echo U('Category/add');?>';" />
</span>
<div class="validate_msg_tiny">至少选择一个类型</div>
</div>
<div class="text_info clearfix"><span>按钮类型:</span></div>
<div class="input_info">
<select name="type">
<option value="text">文本框</option>
<option value="textarea">内容框</option>
<option value="checkbox">多选框</option>
<option value="radio">单选框</option>
<option value="select">下拉框</option>
<option value="number">数字框</option>
<option value="range">滑动条</option>
<option value="date">日期</option>
<option value="time">时间</option>
<option value="email">邮箱</option>
</select>
</div>
<div class="text_info clearfix"><span>内容:</span></div>
<div class="input_info_high">
<textarea class="width300 height70" name='content'></textarea>
<div class="validate_msg_short ">100长度的字母、数字、汉字和下划线的组合</div>
</div>
<div class="text_info clearfix"><span>备注:</span></div>
<div class="input_info_high">
<textarea class="width300 height70" name='note'></textarea>
<div class="validate_msg_short ">100长度的字母、数字、汉字和下划线的组合</div>
</div>
<div class="button_info clearfix">
<input type="button" value="保存" class="btn_save" onclick="send()" />
<input type="button" value="取消" class="btn_save" />
</div>
</form>
</div>
<!--主要区域结束-->
<script type="text/javascript">
function send(){
$.ajax({
url: '/wms/index.php/Attribute/add',
type: 'post',
dataType:'json',
data: $(".main_form").serializeArray(),
success: function(data) {
//判断是否添加成功!
if(data.status==0){
layer.msg(data.info,{icon: 5});
}else{
layer.msg(data.info,{icon: 6});
//延迟跳转
setTimeout(function () {
location.href = "<?php echo U('Attribute/index');?>";
}, <?php echo C('AJAX_TIME');?>);
}
}
});
}
</script>
<script type="text/javascript">
$(function(){
//点击之后的图标
$('.bill_off').addClass('bill_on').removeClass('bill_off');
});
</script>
<div id="footer">
<p>[ 源自技昂专注WMSTMSPOD的解决方案 ]</p>
<p>版权所有(C)苏州技昂信息技术有限公司 </p>
</div>
</body>
</html>

View file

@ -0,0 +1,117 @@
<?php if (!defined('THINK_PATH')) exit();?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>WMS-仓储管理系统</title>
<link type="text/css" rel="stylesheet" media="all" href="/wms/Public/styles/global.css" />
<link type="text/css" rel="stylesheet" media="all" href="/wms/Public/styles/global_color.css" />
<script src="/wms/Public/js/jquery-1.9.1.min.js"></script>
<script src="/wms/Public/layer/layer.js"></script>
<script src="/wms/Public/js/user.js"></script>
</head>
<body>
<!--Logo区域开始-->
<div id="header">
<img src="/wms/Public/images/logo.png" alt="logo" class="left"/>
<span style="font-weight:bold;">Hi!</span>
<span style="color:white;font-weight:bold;"><?php echo ($infos["nickname"]); ?></span>
<a href="<?php echo U('Login/loginout');?>" >[退出]</a>
</div>
<!--Logo区域结束-->
<!--导航区域开始-->
<div id="navi">
<ul id="menu">
<li><a href="<?php echo U('Index/index');?>" class="index_off"></a></li>
<li><a href="<?php echo U('Role/index');?>" class="role_off"></a></li>
<li><a href="<?php echo U('Admin/index');?>" class="admin_off"></a></li>
<li><a href="<?php echo U('Store/index');?>" class="store_off"></a></li>
<li><a href="<?php echo U('Account/index');?>" class="emp_off"></a></li>
<li><a href="<?php echo U('Buy/index');?>" class="buy_off"></a></li>
<li><a href="<?php echo U('Sell/index');?>" class="sell_off"></a></li>
<li><a href="<?php echo U('Goods/index');?>" class="warehouse_off"></a></li>
<li><a href="<?php echo U('User/info');?>" class="information_off"></a></li>
<li><a href="<?php echo U('User/pwd');?>" class="password_off"></a></li>
</ul>
</div>
<!--导航区域结束-->
<!--主要区域开始-->
<div id="main">
<form action="/wms/index.php/Role/edit/id/1" method="post" class="main_form">
<input type="hidden" name='id' value='<?php echo ($info["id"]); ?>'/>
<div class="text_info clearfix"><span>角色名称:</span></div>
<div class="input_info">
<input type="text" class="width200" name='role_name' value='<?php echo ($info["role_name"]); ?>'/>
<span class="required">*</span>
<div class="validate_msg_medium">不能为空且为20长度的字母、数字和汉字的组合</div>
</div>
<div class="text_info clearfix"><span>设置权限:</span></div>
<div class="input_info_high">
<div class="input_info_scroll">
<ul>
<!--遍历权限-->
<?php if(is_array($res)): $i = 0; $__LIST__ = $res;if( count($__LIST__)==0 ) : echo "" ;else: foreach($__LIST__ as $key=>$vo): $mod = ($i % 2 );++$i;?><li><input type="checkbox" value='<?php echo ($vo["id"]); ?>' name='privliege_id[]'
<?php if( strstr( $info['names'],$vo['name'] ) ){ echo 'checked'; } ?>
/><?php echo ($vo["name"]); ?></li><?php endforeach; endif; else: echo "" ;endif; ?>
</ul>
</div>
<span class="required">
<input type="button" value="增加" class="btn_add" onclick="location.href='<?php echo U('Privilege/add');?>';" />
</span>
<div class="validate_msg_tiny">至少选择一个权限</div>
</div>
<div class="button_info clearfix">
<input type="button" value="保存" class="btn_save" onclick="send()" />
<input type="button" value="取消" class="btn_save" />
</div>
</form>
</div>
<!--主要区域结束-->
<script type="text/javascript">
$(function(){
//点击之后的图标
$('.role_off').addClass('role_on').removeClass('role_off');
});
</script>
<script type="text/javascript">
function send(){
$.ajax({
url: '/wms/index.php/Role/edit/id/1',
type: 'post',
dataType:'json',
data: $(".main_form").serializeArray(),
success: function(data) {
// console.log(data);
//判断是否添加成功!
if(data.status==0){
layer.msg(data.info,{icon: 5});
}else{
layer.msg(data.info,{icon: 6});
//延迟跳转
setTimeout(function () {
location.href = "<?php echo U('Role/index');?>";
}, <?php echo C('AJAX_TIME');?>);
}
}
});
}
</script>
<div id="footer">
<p>[ 源自技昂专注WMSTMSPOD的解决方案 ]</p>
<p>版权所有(C)苏州技昂信息技术有限公司 </p>
</div>
</body>
</html>

Some files were not shown because too many files have changed in this diff Show more