yylib-quick-mobile
Version:
yylib-quick-mobile
290 lines (248 loc) • 12.1 kB
JavaScript
Object.defineProperty(exports, "__esModule", {
value: true
});
var _whiteSpace = require('antd-mobile/lib/white-space');
var _whiteSpace2 = _interopRequireDefault(_whiteSpace);
var _modal = require('antd-mobile/lib/modal');
var _modal2 = _interopRequireDefault(_modal);
var _list = require('antd-mobile/lib/list');
var _list2 = _interopRequireDefault(_list);
var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
require('antd-mobile/lib/white-space/style/css');
require('antd-mobile/lib/modal/style/css');
require('antd-mobile/lib/list/style/css');
var _react = require('react');
var _react2 = _interopRequireDefault(_react);
var _reactWeui = require('react-weui');
var _propTypes = require('prop-types');
var _propTypes2 = _interopRequireDefault(_propTypes);
var _SSIcon = require('../common/SSIcon');
var _SSIcon2 = _interopRequireDefault(_SSIcon);
var _FunctionUtil = require('../../utils/FunctionUtil');
var _UploadFileUtils = require('../utils/UploadFileUtils');
var _UploadFileUtils2 = _interopRequireDefault(_UploadFileUtils);
require('../common/css/common.css');
var _SSButton = require('../common/SSButton');
var _SSButton2 = _interopRequireDefault(_SSButton);
var _AuthToken = require('../utils/AuthToken');
var _AuthToken2 = _interopRequireDefault(_AuthToken);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
var Item = _list2.default.Item;
var alert = _modal2.default.alert;
var SSFilePicker = function (_Component) {
_inherits(SSFilePicker, _Component);
function SSFilePicker() {
var _ref;
var _temp, _this, _ret;
_classCallCheck(this, SSFilePicker);
for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {
args[_key] = arguments[_key];
}
return _ret = (_temp = (_this = _possibleConstructorReturn(this, (_ref = SSFilePicker.__proto__ || Object.getPrototypeOf(SSFilePicker)).call.apply(_ref, [this].concat(args))), _this), _this.state = {
files: _this.props.files,
noFile: null
}, _this.deleteFile = function (index, e) {
console.log("e", e, index);
e.preventDefault();
e.stopPropagation();
var that = _this;
var alertInstance = alert('删除', '删除后不可恢复!!!', [{ text: '取消', onPress: function onPress() {
alertInstance.close();
}, style: 'default' }, { text: '确定', onPress: function onPress() {
console.log("attach", that.state.files);
if (_this.props.source.sourceId) {
var params = {
id: _this.props.source.sourceId,
billType: _this.props.source.billType,
sourceType: _this.props.source.sourceType,
attachIds: _this.state.files[index].gid
};
_UploadFileUtils2.default.delAttach(params, function () {
that.setState({
files: that.state.files.filter(function (e, i) {
return i != index;
})
});
});
} else {
_this.setState({
files: that.state.files.filter(function (e, i) {
return i != 0;
})
});
if ((0, _FunctionUtil.isFunction)(_this.props.onChange)) {
_this.props.onChange(that.state.files.filter(function (e, i) {
return i != index;
}));
}
}
} }]);
}, _this.onChange = function (files, type, index) {
var that = _this;
if (type == 'add') {
var temp = files[files.length - 1];
_UploadFileUtils2.default.multiFilesUpLoadModified(files[files.length - 1], _this.props.source.billType, {
sourceId: _this.props.source.sourceId,
sourceType: _this.props.source.sourceType
}, function (fileList) {
that.setState({
files: that.state.files.concat(fileList)
});
if ((0, _FunctionUtil.isFunction)(_this.props.onChange)) {
_this.props.onChange(that.state.files);
}
});
}
}, _this.onUpload = function () {
var that = _this;
var params = {
sourceId: _this.props.source.sourceId,
billType: _this.props.source.billType,
sourceType: _this.props.source.sourceType,
userId: _AuthToken2.default.getUserId(),
userName: _AuthToken2.default.getUserName()
};
var file = {};
window.YYPlugin.call("CommonPlugin", "postFile", params, function success(result) {
console.log("resultFile", result);
file.fileName = result.fileName;
file.filePath = result.filePath;
file.gid = result.gid;
that.onChange(that.state.files.concat({ files: [file] }), 'add');
});
}, _temp), _possibleConstructorReturn(_this, _ret);
}
_createClass(SSFilePicker, [{
key: 'onFileClick',
value: function onFileClick(item) {
window.YYPlugin.call("CommonPlugin", "openAttach", {
url: item.fileUrl,
filename: item.name
});
}
}, {
key: 'componentWillReceiveProps',
value: function componentWillReceiveProps(nextProps) {
if (this.props.source && this.props.source.sourceId != nextProps.source.sourceId) {
this.loadAttachList(this.props.source);
}
if (JSON.stringify(nextProps.files) !== JSON.stringify(this.props.files)) {
this.setState({
files: nextProps.files
});
}
}
}, {
key: 'loadAttachList',
value: function loadAttachList(source) {
var params = {
id: source.sourceId,
billType: source.billType,
type: source.sourceType
};
var that = this;
if (source.sourceId && source.sourceType && source.billType) {
_UploadFileUtils2.default.loadAttachList(params, function (data) {
if (data.length > 0) {
that.setState({
files: data
});
} else {
that.setState({
noFile: '暂无附件'
});
}
});
}
}
}, {
key: 'componentDidMount',
value: function componentDidMount() {
if (this.props.source) {
this.loadAttachList(this.props.source);
}
}
}, {
key: 'render',
value: function render() {
var _this2 = this;
var _props = this.props,
icon = _props.icon,
disabled = _props.disabled,
maxSize = _props.maxSize,
iconColor = _props.iconColor,
label = _props.label,
required = _props.required;
var arr = [];
var cls = {
textAlign: 'center',
color: '#3cc3ff',
display: "inline-block",
textIndent: "0.3rem",
maxWidth: '6rem',
overflow: 'hidden',
textOverflow: 'ellipsis',
whiteSpace: 'nowrap'
};
return _react2.default.createElement(
'div',
{ className: 'SealMgrFile' },
_react2.default.createElement(_whiteSpace2.default, { size: 'lg' }),
_react2.default.createElement(
_list2.default,
null,
this.state.files.length > 0 ? this.state.files.map(function (v, i) {
return _react2.default.createElement(
Item,
{
align: 'middle',
onClick: _this2.onFileClick.bind(_this2, v),
key: i },
_react2.default.createElement(
'div',
{ style: cls },
v.backData.fileName
),
_react2.default.createElement(
'a',
{ onClick: _this2.deleteFile.bind(_this2, i), style: { display: disabled ? 'none' : '' } },
_react2.default.createElement(_SSIcon2.default, { icon: 'icon-Idelete', color: '#ff4b50', size: 's' })
)
);
}) : this.state.noFile
),
_react2.default.createElement(_SSButton2.default, { text: '\u70B9\u51FB\u4E0A\u4F20', type: 'dashed', onClick: this.onUpload, style: { display: disabled ? 'none' : '' } })
);
}
}]);
return SSFilePicker;
}(_react.Component);
SSFilePicker.propTypes = {
selectable: _propTypes2.default.bool,
icon: _propTypes2.default.string,
iconColor: _propTypes2.default.string,
label: _propTypes2.default.string,
maxSize: _propTypes2.default.number,
disabled: _propTypes2.default.bool,
source: _propTypes2.default.object,
files: _propTypes2.default.array
};
SSFilePicker.defaultProps = {
selectable: true,
icon: 'icon-xingzhuang8',
iconColor: '',
label: '附件',
maxSize: 5,
disabled: false,
files: [],
source: {
billType: '',
sourceType: '',
sourceId: ''
}
};
exports.default = SSFilePicker;
;