liuhairui преди 1 година
родител
ревизия
d7aa90d001

+ 52 - 0
application/admin/model/stock/Customer.php

@@ -0,0 +1,52 @@
+<?php
+
+namespace app\admin\model\stock;
+
+use think\Model;
+use fast\Tree;
+
+class Customer extends Model {
+
+    // 表名
+    protected $name = 'stock_customer';
+    // 自动写入时间戳字段
+    protected $autoWriteTimestamp = 'int';
+    // 定义时间戳字段名
+    protected $createTime = 'createtime';
+    protected $updateTime = 'updatetime';
+    // 追加属性
+    protected $append = [
+        'enabledmark_text'
+    ];
+
+    protected static function init() {
+        self::afterInsert(function ($row) {
+            $pk = $row->getPk();
+            $row->getQuery()->where($pk, $row[$pk])->update(['weigh' => $row[$pk]]);
+        });
+    }
+
+    public function getEnabledmarkList() {
+        return ['1' => __('Enabledmark 1'), '0' => __('Enabledmark 0')];
+    }
+
+    public function getEnabledmarkTextAttr($value, $data) {
+        $value = $value ? $value : $data['enabledmark'];
+        $list = $this->getEnabledmarkList();
+        return isset($list[$value]) ? $list[$value] : '';
+    }
+
+    // public function getCustomerTree()
+    // {
+    //     $customerList = collection(model('StockCustomer')->select())->toArray();
+    //     Tree::instance()->init($customerList);
+    //     $customer = [];
+    //     $this->customerList = Tree::instance()->getTreeList(Tree::instance()->getTreeArray(0), 'name');
+    //     $primary = array(array('name'=>'==请选择上级==','id'=>''));
+    //     $result = array_merge_recursive($primary, $this->customerList);
+    //     foreach ($result as $k => $v) {
+    //         $customer[$v['id']] = $v['name'];
+    //     }
+    //     return $customer;
+    // }
+}

+ 62 - 0
application/admin/model/stock/Datadict.php

@@ -0,0 +1,62 @@
+<?php
+
+namespace app\admin\model\stock;
+
+use think\Model;
+
+class Datadict extends Model {
+
+    // 表名
+    protected $name = 'stock_datadict';
+    // 自动写入时间戳字段
+    protected $autoWriteTimestamp = 'int';
+    // 定义时间戳字段名
+    protected $createTime = 'createtime';
+    protected $updateTime = 'updatetime';
+    // 追加属性
+    protected $append = [
+        'istree_text',
+        'enabled_text'
+    ];
+
+    protected static function init() {
+        self::afterInsert(function ($row) {
+            $pk = $row->getPk();
+            $row->getQuery()->where($pk, $row[$pk])->update(['weigh' => $row[$pk]]);
+        });
+    }
+
+    public function getIstreeList() {
+        return ['0' => __('Istree 0'), '1' => __('Istree 1')];
+    }
+
+    public function getEnabledList() {
+        return ['1' => __('Enabled 1'), '0' => __('Enabled 0')];
+    }
+
+    public function getIstreeTextAttr($value, $data) {
+        $value = $value ? $value : $data['istree'];
+        $list = $this->getIstreeList();
+        return isset($list[$value]) ? $list[$value] : '';
+    }
+
+    public function getEnabledTextAttr($value, $data) {
+        $value = $value ? $value : $data['enabled'];
+        $list = $this->getEnabledList();
+        return isset($list[$value]) ? $list[$value] : '';
+    }
+
+    public function getDatadic($code = '') {
+        $sqlresult = \think\Db::view('stock_datadict a','code')
+                ->view('stock_datadictitem b','name,value','a.id=b.datadict_id')
+                ->where('a.code',$code)
+                ->order('b.weigh ASC')
+                ->select();
+        $result = [];
+        foreach ($sqlresult as $k => $v) {
+            $result[$v['value']] = $v['name'];
+        }
+        return $result;
+    }
+
+}

+ 53 - 0
application/admin/model/stock/Datadictitem.php

@@ -0,0 +1,53 @@
+<?php
+
+namespace app\admin\model\stock;
+
+use think\Model;
+
+class Datadictitem extends Model
+{
+    // 表名
+    protected $name = 'stock_datadictitem';
+    
+    // 自动写入时间戳字段
+    protected $autoWriteTimestamp = false;
+
+    // 定义时间戳字段名
+    protected $createTime = false;
+    protected $updateTime = false;
+    
+    // 追加属性
+    protected $append = [
+        'enabled_text'
+    ];
+    
+
+    protected static function init()
+    {
+        self::afterInsert(function ($row) {
+            $pk = $row->getPk();
+            $row->getQuery()->where($pk, $row[$pk])->update(['weigh' => $row[$pk]]);
+        });
+    }
+
+    
+    public function getEnabledList()
+    {
+        return ['1' => __('Enabled 1'),'0' => __('Enabled 0')];
+    }     
+
+
+    public function getEnabledTextAttr($value, $data)
+    {        
+        $value = $value ? $value : $data['enabled'];
+        $list = $this->getEnabledList();
+        return isset($list[$value]) ? $list[$value] : '';
+    }
+
+
+    public function datadict() {
+        return $this->belongsTo('\app\admin\model\stock\Datadict', 'datadict_id', 'id', [], 'LEFT')->setEagerlyType(0);
+    }
+
+
+}

+ 26 - 0
application/admin/model/stock/Goods.php

@@ -0,0 +1,26 @@
+<?php
+
+namespace app\admin\model\stock;
+
+use think\Model;
+
+class Goods extends Model {
+
+    // 表名
+    protected $name = 'stock_goods';
+    // 自动写入时间戳字段
+    protected $autoWriteTimestamp = 'int';
+    // 定义时间戳字段名
+    protected $createTime = 'createtime';
+    protected $updateTime = 'updatetime';
+    // 追加属性
+    protected $append = ["curstocknum"];
+    public function goodscategory() {
+        return $this->hasone('\app\admin\model\stock\Goodscategory', 'id', 'goodscategoryid')->setEagerlyType(0);
+    }
+    // 当前库存
+    public function getCurstocknumAttr($value,$data) {
+        $curstocknum=\app\admin\model\stock\Stockcur::where("stock_goods_id",$data["id"])->sum("curnums");
+        return $curstocknum;
+    }
+}

+ 20 - 0
application/admin/model/stock/Goodscategory.php

@@ -0,0 +1,20 @@
+<?php
+
+namespace app\admin\model\stock;
+
+use think\Model;
+
+class Goodscategory extends Model {
+
+    // 表名
+    protected $name = 'stock_goodscategory';
+    // 自动写入时间戳字段
+    protected $autoWriteTimestamp = false;
+    // 定义时间戳字段名
+    protected $createTime = false;
+    protected $updateTime = false;
+    // 追加属性
+    protected $append = [
+    ];
+
+}

+ 33 - 0
application/admin/model/stock/Stockcur.php

@@ -0,0 +1,33 @@
+<?php
+
+namespace app\admin\model\stock;
+
+use think\Model;
+
+class Stockcur extends Model {
+
+    // 表名
+    protected $name = 'stock_stockcur';
+    // 自动写入时间戳字段
+    protected $autoWriteTimestamp = false;
+    // 定义时间戳字段名
+    protected $createTime = false;
+    protected $updateTime = false;
+    // 追加属性
+    protected $append = [
+    ];
+
+    public function stockgoods() {
+        return $this->belongsTo('\app\admin\model\stock\Goods', 'stock_goods_id', 'id', [], 'LEFT')->setEagerlyType(0);
+    }
+
+    public function stockinlist() {
+        return $this->belongsTo('\app\admin\model\stock\Stockinlist', 'stock_stockin_list_id', 'id', [], 'LEFT')->setEagerlyType(0);
+    }
+
+    public function getGoodsStoknum($goodsid) {
+        $result = model('\app\admin\model\stock\Stockcur')->field('SUM(curnums)')->where('stock_goods_id', $goodsid)->select();
+        $curnum = $result[0]['SUM(curnums)'] == null ? 0 : $result[0]['SUM(curnums)'];
+        return $curnum;
+    }
+}

+ 36 - 0
application/admin/model/stock/Stockin.php

@@ -0,0 +1,36 @@
+<?php
+
+namespace app\admin\model\stock;
+
+use think\Model;
+
+class Stockin extends Model
+{
+
+    // 表名
+    protected $name = 'stock_stockin';
+    // 自动写入时间戳字段
+    protected $autoWriteTimestamp = 'int';
+    // 定义时间戳字段名
+    protected $createTime = 'createtime';
+    protected $updateTime = 'updatetime';
+    // 追加属性
+    protected $append = [];
+    
+    public function supplier()
+    {
+        return $this->hasOne('\app\admin\model\stock\Supplier', 'id', 'stock_supplier_id', [], 'LEFT')->setEagerlyType(0);
+    }
+
+    //生成入库编号
+    public function createdocnum()
+    {
+        $nowdate = date('Ymd', time());
+        do{
+            $randstr=rand(1000,9999);
+            $docnum='GHD' . $nowdate.$randstr;
+            $result = self::where('docnum',$docnum)->count();
+        }while($result>0);
+        return $docnum;
+    }
+}

+ 30 - 0
application/admin/model/stock/Stockinlist.php

@@ -0,0 +1,30 @@
+<?php
+
+namespace app\admin\model\stock;
+
+use think\Model;
+
+class Stockinlist extends Model {
+
+    // 表名
+    protected $name = 'stock_stockin_list';
+    // 自动写入时间戳字段
+    protected $autoWriteTimestamp = 'int';
+    // 定义时间戳字段名
+    protected $createTime = 'createtime';
+    protected $updateTime = 'updatetime';
+    protected $insert = ['charged' => 0];
+    // 追加属性
+    protected $append = [
+    ];
+
+    
+    public function goods()
+    {
+        return $this->hasOne('\app\admin\model\stock\Goods', 'id', 'stock_goods_id', [], 'LEFT')->setEagerlyType(0);
+    }
+    public function stockin() {
+        return $this->belongsTo('\app\admin\model\stock\Stockin', 'stock_stockin_id', 'id', [], 'LEFT')->setEagerlyType(0);
+    }
+}
+

+ 35 - 0
application/admin/model/stock/Stockout.php

@@ -0,0 +1,35 @@
+<?php
+
+namespace app\admin\model\stock;
+
+use think\Model;
+
+class Stockout extends Model {
+
+    // 表名
+    protected $name = 'stock_stockout';
+    // 自动写入时间戳字段
+    protected $autoWriteTimestamp = 'int';
+    // 定义时间戳字段名
+    protected $createTime = 'createtime';
+    protected $updateTime = 'updatetime';
+    // 追加属性
+    protected $append = [
+    ];
+    public function customer() {
+        return $this->hasOne('\app\admin\model\stock\Customer', 'id', 'stock_customer_id', [], 'LEFT')->setEagerlyType(0);
+    }
+
+     //生成出库编号
+     public function createdocnum()
+     {
+         $nowdate = date('Ymd', time());
+         do{
+             $randstr=rand(1000,9999);
+             $docnum='XSD' . $nowdate.$randstr;
+             $result = self::where('docnum',$docnum)->count();
+         }while($result>0);
+         return $docnum;
+     }
+
+}

+ 32 - 0
application/admin/model/stock/Stockoutlist.php

@@ -0,0 +1,32 @@
+<?php
+
+namespace app\admin\model\stock;
+
+use think\Model;
+
+class Stockoutlist extends Model {
+
+    // 表名
+    protected $name = 'stock_stockout_list';
+    // 自动写入时间戳字段
+    protected $autoWriteTimestamp = 'int';
+    // 定义时间戳字段名
+    protected $createTime = 'createtime';
+    protected $updateTime = 'updatetime';
+    protected $insert = ['charged' => 0];
+    // 追加属性
+    protected $append = [
+    ];
+    
+    public function goods() {
+        return $this->belongsTo('\app\admin\model\stock\Goods', 'stock_goods_id', 'id', [], 'LEFT')->setEagerlyType(0);
+    }
+
+    public function stockinlist() {
+        return $this->belongsTo('\app\admin\model\stock\Stockin', 'stock_stockinlist_id', 'id', [], 'LEFT')->setEagerlyType(0);
+    }
+    
+    public function stockout() {
+        return $this->belongsTo('\app\admin\model\stock\Stockout', 'stock_stockout_id', 'id', [], 'LEFT')->setEagerlyType(0);
+    }
+}

+ 33 - 0
application/admin/model/stock/Supplier.php

@@ -0,0 +1,33 @@
+<?php
+
+namespace app\admin\model\stock;
+
+use think\Model;
+
+class Supplier extends Model
+{
+    // 表名
+    protected $name = 'stock_supplier';
+    
+    // 自动写入时间戳字段
+    protected $autoWriteTimestamp = false;
+
+    // 定义时间戳字段名
+    protected $createTime = false;
+    protected $updateTime = false;
+    
+    // 追加属性
+    protected $append = [
+
+    ];
+    
+
+    
+
+
+
+
+
+
+
+}

+ 121 - 0
public/assets/js/LodopFuncs.js

@@ -0,0 +1,121 @@
+var CreatedOKLodop7766=null;
+
+//====判断是否需要安装CLodop云打印服务器::====
+function needCLodop(){
+    try{
+	var ua=navigator.userAgent;
+	if (ua.match(/Windows\sPhone/i) !=null) return true;
+	if (ua.match(/iPhone|iPod/i) != null) return true;
+	if (ua.match(/Android/i) != null) return true;
+	if (ua.match(/Edge\D?\d+/i) != null) return true;
+	
+	var verTrident=ua.match(/Trident\D?\d+/i);
+	var verIE=ua.match(/MSIE\D?\d+/i);
+	var verOPR=ua.match(/OPR\D?\d+/i);
+	var verFF=ua.match(/Firefox\D?\d+/i);
+	var x64=ua.match(/x64/i);
+	if ((verTrident==null)&&(verIE==null)&&(x64!==null)) 
+		return true; else
+	if ( verFF !== null) {
+		verFF = verFF[0].match(/\d+/);
+		if ((verFF[0]>= 41)||(x64!==null)) return true;
+	} else 
+	if ( verOPR !== null) {
+		verOPR = verOPR[0].match(/\d+/);
+		if ( verOPR[0] >= 32 ) return true;
+	} else 
+	if ((verTrident==null)&&(verIE==null)) {
+		var verChrome=ua.match(/Chrome\D?\d+/i);		
+		if ( verChrome !== null ) {
+			verChrome = verChrome[0].match(/\d+/);
+			if (verChrome[0]>=41) return true;
+		};
+	};
+        return false;
+    } catch(err) {return true;};
+};
+
+//====页面引用CLodop云打印必须的JS文件:====
+if (needCLodop()) {
+	var head = document.head || document.getElementsByTagName("head")[0] || document.documentElement;
+	var oscript = document.createElement("script");
+	oscript.src ="http://localhost:8000/CLodopfuncs.js?priority=1";
+	head.insertBefore( oscript,head.firstChild );
+
+	//引用双端口(8000和18000)避免其中某个被占用:
+	oscript = document.createElement("script");
+	oscript.src ="http://localhost:18000/CLodopfuncs.js?priority=0";
+	head.insertBefore( oscript,head.firstChild );
+};
+
+//====获取LODOP对象的主过程:====
+function getLodop(oOBJECT,oEMBED){
+    var strHtmInstall="<br><font color='#FF00FF'>打印控件未安装!点击这里<a href='install_lodop32.exe' target='_self'>执行安装</a>,安装后请刷新页面或重新进入。</font>";
+    var strHtmUpdate="<br><font color='#FF00FF'>打印控件需要升级!点击这里<a href='install_lodop32.exe' target='_self'>执行升级</a>,升级后请重新进入。</font>";
+    var strHtm64_Install="<br><font color='#FF00FF'>打印控件未安装!点击这里<a href='install_lodop64.exe' target='_self'>执行安装</a>,安装后请刷新页面或重新进入。</font>";
+    var strHtm64_Update="<br><font color='#FF00FF'>打印控件需要升级!点击这里<a href='install_lodop64.exe' target='_self'>执行升级</a>,升级后请重新进入。</font>";
+    var strHtmFireFox="<br><br><font color='#FF00FF'>(注意:如曾安装过Lodop旧版附件npActiveXPLugin,请在【工具】->【附加组件】->【扩展】中先卸它)</font>";
+    var strHtmChrome="<br><br><font color='#FF00FF'>(如果此前正常,仅因浏览器升级或重安装而出问题,需重新执行以上安装)</font>";
+    var strCLodopInstall="<br><font color='#FF00FF'>CLodop云打印服务(localhost本地)未安装启动!点击这里<a href='CLodop_Setup_for_Win32NT.exe' target='_self'>执行安装</a>,安装后请刷新页面。</font>";
+    var strCLodopUpdate="<br><font color='#FF00FF'>CLodop云打印服务需升级!点击这里<a href='CLodop_Setup_for_Win32NT.exe' target='_self'>执行升级</a>,升级后请刷新页面。</font>";
+    var LODOP;
+    try{
+        var isIE = (navigator.userAgent.indexOf('MSIE')>=0) || (navigator.userAgent.indexOf('Trident')>=0);
+        if (needCLodop()) {
+            try{ LODOP=getCLodop();} catch(err) {};
+	    if (!LODOP && document.readyState!=="complete") {alert("C-Lodop没准备好,请稍后再试!"); return;};
+            if (!LODOP) {
+		 if (isIE) document.write(strCLodopInstall); else
+		 document.body.innerHTML=strCLodopInstall+document.body.innerHTML;
+                 return;
+            } else {
+
+	         if (CLODOP.CVERSION<"3.0.4.3") { 
+			if (isIE) document.write(strCLodopUpdate); else
+			document.body.innerHTML=strCLodopUpdate+document.body.innerHTML;
+		 };
+		 if (oEMBED && oEMBED.parentNode) oEMBED.parentNode.removeChild(oEMBED);
+		 if (oOBJECT && oOBJECT.parentNode) oOBJECT.parentNode.removeChild(oOBJECT);	
+	    };
+        } else {
+            var is64IE  = isIE && (navigator.userAgent.indexOf('x64')>=0);
+            //=====如果页面有Lodop就直接使用,没有则新建:==========
+            if (oOBJECT!=undefined || oEMBED!=undefined) {
+                if (isIE) LODOP=oOBJECT; else  LODOP=oEMBED;
+            } else if (CreatedOKLodop7766==null){
+                LODOP=document.createElement("object");
+                LODOP.setAttribute("width",0);
+                LODOP.setAttribute("height",0);
+                LODOP.setAttribute("style","position:absolute;left:0px;top:-100px;width:0px;height:0px;");
+                if (isIE) LODOP.setAttribute("classid","clsid:2105C259-1E0C-4534-8141-A753534CB4CA");
+                else LODOP.setAttribute("type","application/x-print-lodop");
+                document.documentElement.appendChild(LODOP);
+                CreatedOKLodop7766=LODOP;
+             } else LODOP=CreatedOKLodop7766;
+            //=====Lodop插件未安装时提示下载地址:==========
+            if ((LODOP==null)||(typeof(LODOP.VERSION)=="undefined")) {
+                 if (navigator.userAgent.indexOf('Chrome')>=0)
+                     document.body.innerHTML=strHtmChrome+document.body.innerHTML;
+                 if (navigator.userAgent.indexOf('Firefox')>=0)
+                     document.body.innerHTML=strHtmFireFox+document.body.innerHTML;
+                 if (is64IE) document.write(strHtm64_Install); else
+                 if (isIE)   document.write(strHtmInstall);    else
+                     document.body.innerHTML=strHtmInstall+document.body.innerHTML;
+                 return LODOP;
+            };
+        };
+        if (LODOP.VERSION<"6.2.2.3") {
+            if (!needCLodop()){
+            	if (is64IE) document.write(strHtm64_Update); else
+            	if (isIE) document.write(strHtmUpdate); else
+            	document.body.innerHTML=strHtmUpdate+document.body.innerHTML;
+	    };
+            return LODOP;
+        };
+        //===如下空白位置适合调用统一功能(如注册语句、语言选择等):===
+
+        //===========================================================
+        return LODOP;
+    } catch(err) {alert("getLodop出错:"+err);};
+};
+