FHandwriting_wev8.js 4.3 KB
define(['mUtil', "Component"],function(mUtil, Component, ImgDrawing) {
	
	var FHandwriting = function(options) {
		Component.super(this, options);	
		
		this.type = "FHandwriting";
		this.tpl = this.type + "_html";
		this.css = this.type + "_css";
        this.dataload = true;

		var vm = this.viewModel = {
			form : "",
			field : {
				label : "",//显示名
				name : "", //字段名
				value : ""//字段值
			},
			hint : "点击输入",
			height: 150,
			required : false,
			readonly : false
		};
		
		this.dbValueHasSet = false; //是否已设置表单数据值,调用this.setValueByDB()方法后修改此状态
		
		this.beforeMount = function(){
			vm.lableclass = vm.field.label && "wev-handwriting-label" || "wev-handwriting-labelnone";
			vm.defaultlabel = vm.field.label || mUtil.getLabel(1006, "批注");//添加默认fieldlabel用于checkRequired

			if(!vm.field.value){
				vm.emptyimage = "wev-handwriting-empty";
			}
		};

		var $comp, $field, $wrap, $wevField;

		this.mounted = function(){
			$wevField = this.$el.find(".wev-field");
			$comp = this.$el.children(".wev-comp-"+this.type);
			$wrap = $(".wev-handwriting-wrap", $comp);
			$field = $("input[name='fieldname_"+vm.field.name+"']", $comp);
			var data = "";
			
			if(vm.readonly) return;

			require(["imgdrawing"]);//TODO 预加载
			var pageEvent = require("pageEvent");

			$wrap.on("click", function () {
				var fieldValue = $field.val();
				
				if (fieldValue) {
					data = $("img", $wrap).attr("src");
				}

				require(["imgdrawing"], function (ImgDrawing) {
					pageEvent.register("change", ImgDrawing.hide);
					ImgDrawing.draw({
						data: data,
						title: vm.defaultlabel,
						type: "handwriting",
						callback: {
							done: function (base64Data) {
								$("img", $wrap).attr("src", base64Data);
								$wrap.removeClass("wev-handwriting-empty");
								$field.val(base64Data);
								pageEvent.destory("change", ImgDrawing.hide);
							},
							close: function () {
								pageEvent.destory("change", ImgDrawing.hide);
							}
						}
					});
				});
			});
		};
		
		this.getData = function(){
			var data = {};
			
			data["fieldname_" + vm.field.name] = $field.val();
			data["type_" + vm.field.name] = "photo";

			return data;
		};
		
		this.reset = function(){
			var fieldValue = vm.field.value;

			this.setValue(fieldValue);
			
			$wevField.removeClass("wev-required-remind");
		};
		
		this.checkRequired = function(){
			var required = vm.required && !$field.val();

			$wevField.toggleClass("wev-required-remind", required);
			return required && vm.defaultlabel;
		};
		
		this.setRequired = function (required) {
			vm.required = required;
			$wevField.toggleClass("wev-field-required", required);
			!required && $wevField.removeClass("wev-required-remind");
		};

        this.checkModeDocCategory = function(issetModeDocCategory){
            if(!vm.readonly && !issetModeDocCategory){
                var $dom = this.$el,
                    $wrap = $dom.find('.wev-handwriting-wrap');
                mUtil.getLabel(388817, "附件上传目录未设置!",function(msg){
                    $wrap.addClass("wev-upload-hide");
                    $dom.find(".wev-upload-tip").removeClass("wev-upload-hide").html(msg);
                });
            }
        };
		
		this.setValueByDB = function(val){
			this.dbValueHasSet = true;
			vm.field.value = val;
			this.setValue(val);
		};
		
		this.setValue = function(val){
			var that = this;
			function setValueInner(){
				var d = $.Deferred();
				if(!val){
					$field.val("");
					d.resolve();
				}else{
					if(!isNaN(val)){
						var actionUrl = mUtil.getActionUrl(that.type, { action: "parsePhoto", value: val }, this.pageid);
						
						mUtil.getJSON(actionUrl, function (result) {
							$("img", $wrap).attr("src", mUtil.getAttachUrl(result.data));
							$field.val(val);
						}).then(function(){d.resolve();});
					}else{
						$("img", $wrap).attr("src", val);
						$field.val(val);
						d.resolve();
					}
				}
				return d;
			}
			/*规避异步加载图片时会短暂出现空图片*/
			setValueInner().then(function(){
				$wrap.toggleClass("wev-handwriting-empty", !val);
				this.dbValueHasSet && mUtil.trigger('dataload', that.pageid, that.id);
			});
		};
		
		this.getValue = function(){
			return $field.val();
		};
    };

    return Component.init(FHandwriting);
});