Commit e4588f98 authored by yzl's avatar yzl

- 上传用户反馈代码

parent fb63fae6
# 默认忽略的文件
/shelf/
/workspace.xml
# 数据源本地存储已忽略文件
/dataSources/
/dataSources.local.xml
# 基于编辑器的 HTTP 客户端请求
/httpRequests/
<?xml version="1.0" encoding="UTF-8"?>
<module type="WEB_MODULE" version="4">
<component name="NewModuleRootManager">
<content url="file://$MODULE_DIR$" />
<orderEntry type="inheritedJdk" />
<orderEntry type="sourceFolder" forTests="false" />
</component>
</module>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ProjectModuleManager">
<modules>
<module fileurl="file://$PROJECT_DIR$/.idea/feedback1.iml" filepath="$PROJECT_DIR$/.idea/feedback1.iml" />
</modules>
</component>
</project>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="VcsDirectoryMappings">
<mapping directory="$PROJECT_DIR$" vcs="Git" />
</component>
</project>
\ No newline at end of file
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>添加</title>
<link href="js/antd/antd.css" rel="stylesheet"/>
<link rel="stylesheet/less" type="text/css" href="css/index.less">
<link rel="stylesheet/less" type="text/css" href="js/xndatepicker.css">
</head>
<body>
<div id="app"></div>
<script src="css/less.min.js"></script>
<script src="js/react/react.development.js"></script>
<script src="js/react/react-dom.development.js"></script>
<script src="js/react/browser.min.js"></script>
<script src="js/antd/antd.min.js"></script>
<script src="js/antd/index.umd.js"></script>
<script src="js/jquery.js"></script>
<script src="js/moment.js"></script>
<script type="text/javascript" src="js/xntimepicker.js"></script>
<script type="text/javascript" src="js/xndatepicker.js"></script>
<script type="text/babel">
const useState = React.useState;
const useEffect = React.useEffect;
const Form = antd.Form;
const Input = antd.Input;
const Select = antd.Select;
const Button = antd.Button;
const Row = antd.Row;
const Col = antd.Col;
const DatePicker = antd.DatePicker;
const Upload = antd.Upload;
const Divider = antd.Divider;
const Modal = antd.Modal;
const message = antd.message;
let num = 0;
const arr = [];
const getQueryVariable = (variable) => {
const query = window.location.search.substring(1);
const vars = query.split("&");
for (var i=0;i<vars.length;i++) {
const pair = vars[i].split("=");
if(pair[0] === variable){return pair[1];}
}
return(false);
}
const code = getQueryVariable('site_code');
const HelpAdd = () => {
const formItemLayout = {
labelCol: {
xs: {span: 12},
sm: {span: 3},
},
wrapperCol: {
xs: {span: 24},
sm: {span: 16},
},
};
const {TextArea} = Input;
const [fileList, setFileList] = useState([]);
const [values, setValues] = useState([]);
const [Groups, setGroups] = useState([]);
const imageNum = fileList.length
const [successImages, setSuccessImages] = useState([]);
const [time, setTime] = useState('');
const [ip, setIp] = useState('');
const [modelfileList, setModelfileList] = useState(
{
img: undefined,
imgList: fileList,
previewVisible: false,
previewImage: "",
}
)
const _createGuid = () => {
return "xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx"
.replace(/[xy]/g, function (c) {
var r = (Math.random() * 16) | 0,
v = c == "x" ? r : (r & 0x3) | 0x8;
return v.toString(16);
})
.toUpperCase();
}
const onChangeUpload = ({fileList: newFileList}) => {
setFileList(newFileList);
};
const onPreviewUpload = async file => {
let src = file.url;
if (!src) {
src = await new Promise(resolve => {
let imgFile = new FileReader();
imgFile.readAsDataURL(file.originFileObj);
imgFile.onload = () => resolve(imgFile.result);
})
}
setModelfileList({
previewImage: src || file.url || file.thumbUrl,
previewVisible: true,
})
};
const onhandleCancel = () => { //退出预览
setModelfileList({previewImage: "", previewVisible: false})
}
const onbeforeUpload = (file) => {
const isJpgOrPng = file.type === 'image/jpeg' || file.type === 'image/png';
if (!isJpgOrPng) {
message.error('你只能上传 JPG/PNG 文件!');
}
const isLt2M = file.size / 1024 / 1024 < 2;
if (!isLt2M) {
message.error('图片大小必须小于 2MB!');
}
return isJpgOrPng && isLt2M;
}
const [form] = Form.useForm();
const getValues = async (ipAddress) => {
const obj = {
tableName: '项目管理_售后问题反馈台账表',
'request.preventCache': new Date().getTime(),
}
$.ajax({
type: 'GET',
url: ipAddress + '/CityInterface/Services/CityServer_CaseManage/REST/CaseManageREST.svc/GetTableGroupMeta',
data: obj,
success: function (ret) {
console.log(ret);
if (ret.say.statusCode === '0000') {
const groups = ret.getMe[0].Groups;
const Values = ret.getMe[0].Values;
setValues(Values);
setGroups(groups);
} else {
setValues([]);
setGroups([]);
}
}
})
}
useEffect(() => {
const getIp = () => {
$.ajax({
type: 'GET',
url: './config.json',
success: function(data) {
setIp(data.ip);
getValues(data.ip);
}
})
}
getIp()
new XNDatepicker($("#datetime"),{
format:'YYYY-MM-DD HH:mm:ss',
type:'datetime',//year/month/date/multiple/ week/datetime/datetimerange/ daterange/monthrange/yearrange
multipleDates:[],//当为多选日期类型时的初始值
startTime:'',
// endTime:'2036-04-04',
// minDate:'2019-04-04',
maxDate:'',
separator:' 到 ',
showType:'modal',
linkPanels:false,//面板联动
showClear:true,//是否显示清除按钮
autoConfirm:true,
showShortKeys:true,
autoFillDate:true,//自动变更element里面的值
},function(data){
setTime(data);
})
}, [])
const saveData = async (ipAddress, values, groups) => {
const data = form.getFieldsValue();
data['发生时间'] = data['发生时间'] ? time.format('YYYY-MM-DD HH:mm:ss') : moment().format('YYYY-MM-DD HH:mm:ss');
// 上传图片
const images = [...fileList];
const names = [];
images.forEach((image, index) => {
const formData = new FormData();
const guid = _createGuid();
const obj = {
guid: guid,
folder: '项目管理_售后问题反馈台账表/问题附件截图/' + guid,
id: "WU_File_" + new Date().getTime().toString() + index,
name: image.name,
type: 'png',
lastModifiedDate: image.lastModifiedDate,
size: image.size,
}
names.push('/' + obj.folder + '/' + image.name);
Object.keys(obj).forEach(key => {
formData.append(key, obj[key]);
})
formData.append('file', image.originFileObj);
$.ajax({
type: 'POST',
contentType: false,
processData: false,
url: ip + '/cityinterface/rest/services/filedownload.svc/WebUploaderFile/',
data: formData,
success: function (data) {
console.log(data);
}
})
})
// 上传所有
data['问题附件截图'] = names.join(',');
for (let i = 0; i <= values.length - 1; i += 1) {
for(let key in data) {
if (key === values[i].FieldName) {
values[i].FieldValue = data[key] || '';
if(!values[i].FieldValue){
message.error(values[i].FieldName + '不得为空 !');
return false;
}
}
}
}
$.ajax({
type: 'POST',
url: ipAddress + '/CityInterface/Services/CityServer_CaseManage/REST/CaseManageREST.svc/SaveTableDataInfo?tableName=项目管理_售后问题反馈台账表',
data: JSON.stringify(
{
Groups: groups,
Values: values,
}
),
contentType:'application/json;charset=utf-8',
success: function (data) {
if (data.say.statusCode === '0000') {
message.success('保存成功');
window.location.href = './index.html';
} else {
message.error('保存失败');
}
}
})
}
return (
<div className='helpAdd'>
<div className='helpWrapTitle'>
<div className='helpTitleIcon'/>
问题反馈
</div>
<div className="helpForm" style={{width: '98%'}}>
<Row>
<Col span={10}>
<Form autoComplete="off" form={form} {...formItemLayout} >
<Form.Item label="问题类型" name="问题类型" initialValue={'平台'} labelAlign="right" required>
<Select style={{width: 300}}>
<Select.Option value="平台">平台</Select.Option>
<Select.Option value="手持端">手持端</Select.Option>
</Select>
</Form.Item>
<Form.Item label="发生时间" name="发生时间" required>
<div id="datetime" style={{width: 300}} className='ant-input' />
</Form.Item>
<Form.Item label="问题描述" required name="问题描述">
<TextArea rows={4} placeholder="请描述遇到的问题~" style={{width: 780, resize: "none"}}
showCount maxLength={200}
autoSize={{minRows: 3, maxRows: 5}}
/>
</Form.Item>
<Form.Item label="问题附件截图" required>
<div className='helpUploadBox'>
<Upload
showCount
maxLength={4}
className='helpUploadImg'
listType="picture-card"
fileList={fileList}
style={{width: '90%'}}
beforeUpload={onbeforeUpload}
onChange={onChangeUpload}
onPreview={onPreviewUpload}
>
{fileList.length < 4 && '+ 上传截图'}
</Upload>
<span className='helpUploadStatistic'>
{imageNum}/4
</span>
</div>
</Form.Item>
<Form.Item label="姓名" name="姓名" labelAlign="right" required>
<Input style={{width: 300}} placeholder="平台联系人"/>
</Form.Item>
<Form.Item label="联系方式" name="联系方式" required>
<Input style={{width: 300}} placeholder="请输入联系方式"/>
</Form.Item>
<Modal visible={modelfileList.previewVisible} footer={null} onCancel={onhandleCancel}
title="预览">
<img alt="example" style={{width: '100%'}} src={modelfileList.previewImage}/>
</Modal>
</Form>
</Col>
<Col span={10} offset={4}>
<img src='./images/help/addBg.png' alt=""/>
</Col>
</Row>
<Divider style={{width: '90%'}}/>
<Row>
<Form.Item>
<Button htmlType="reset" style={{margin: '0 20px'}} onClick={() => {
window.location.href = './index.html?site_code=' + code;
}}>
返回
</Button>
<Button type="primary" onClick={() => saveData(ip, values, Groups, successImages)}>
提交
</Button>
</Form.Item>
</Row>
</div>
</div>
);
};
// 渲染
ReactDOM.render(<HelpAdd/>, document.getElementById('app'));
</script>
</body>
</html>
\ No newline at end of file
{
"ip": "https://mis.panda-water.cn"
}
\ No newline at end of file
.helpContainer {
background-color: #fff;
.helpHeader {
height: 260px;
background-image: url('../images/help/help_bg.png');
background-size: cover;
.helpTitle{
width: 900px;
padding: 45px 150px;
.helpSearch{
margin-top: 50px;
background: #FFFFFF;
border: 2px solid #D6E6F6;
border-radius: 24px;
}
.title{
font-size: 42px;
font-family: Microsoft YaHei;
font-weight: bold;
color: #1F2B4F;
line-height: 30px;
}
.hotSearch{
margin-top:20px;
display: flex;
flex: 1;
.hotTitle{
width: 71px;
height: 15px;
font-size: 14px;
font-family: Microsoft YaHei;
font-weight: 400;
color: #1F2B4F;
line-height: 30px;
opacity: 0.45;
}
.hotTitle:after{
border-right: 2px solid #1F2B4F;
}
.hotName{
font-size: 14px;
font-family: Microsoft YaHei;
font-weight: 400;
color: #1F2B4F;
line-height: 30px;
opacity: 0.65;
margin: 0 10px;
cursor: pointer;
}
.hotName:hover{
color: #000;
opacity: 1;
}
}
}
}
.helpContent{
padding: 0 150px;
.helpWrap{
.helpWrapTitle{
display: flex;
margin: 20px 0;
font-size: 16px;
font-family: Microsoft YaHei;
font-weight: 400;
color: #1F2B4F;
line-height: 30px;
opacity: 0.85;
.helpTitleIcon{
width: 4px;
height: 22px;
background: #3C98FF;
border-radius: 2px;
margin-top:4px;
margin-right: 20px;
}
}
}
.helpWrap:last-child{
padding-bottom: 50px;
}
}
.helpWrapContent{
display:flex;
.carouselContent{
width: 1200px;
.commonProblems{
display:flex;
flex: 1;
justify-content: space-between;
align-items: center;
.problemWrap{
width: 225px;
height: 260px;
background: #FFFFFF;
border: 1px solid;
border-image: linear-gradient(0deg, #F5F9FF, #DCEAFF) 10 10;
box-shadow: 0 4px 12px 0 rgba(0, 60, 131, 0.04);
border-radius: 8px;
padding: 20px;
h1{
font-size: 20px;
font-family: Microsoft YaHei;
font-weight: bold;
color: #1F2B4F;
line-height: 30px;
margin-bottom: 20px;
}
p.content{
height: 130px;
font-size: 15px;
font-family: Microsoft YaHei;
font-weight: 400;
color: #1F2B4F;
line-height: 26px;
opacity: 0.65;
border-bottom: 1px solid #E0E6EF;
overflow: auto;
}
p.detail{
font-size: 14px;
font-family: Microsoft YaHei;
font-weight: 400;
color: #3C98FF;
line-height: 24px;
cursor: pointer;
}
}
}
}
.callback{
width: 150px;
height: 160px;
margin-left: 30px;
padding-left: 30px;
border-left: 1px solid #E0E6EF;
p{
font-size: 20px;
font-family: Microsoft YaHei;
font-weight: bold;
color: #1F2B4F;
line-height: 30px;
}
}
.connectWrap{
position: relative;
width: 420px;
height: 150px;
padding: 30px;
background-size: cover;
margin-right: 30px;
.connectTitle {
font-size: 16px;
font-family: Microsoft YaHei;
font-weight: 400;
color: #1F2B4F;
line-height: 30px;
opacity: 0.85;
}
.connectContent{
font-size: 30px;
font-family: DINPro;
font-weight: bold;
margin: 10px 0;
color: #1F2B4F;
line-height: 30px;
opacity: 0.95;
}
.connectInfo{
font-size: 12px;
font-family: Microsoft YaHei;
font-weight: 400;
color: #1F2B4F;
line-height: 30px;
opacity: 0.65;
}
&.phone{
background-image: url('../images/help/phone.png');
}
&.qq{
background-image: url('../images/help/qq.png');
}
&.local{
background-image: url('../images/help/local.png');
}
.qr{
position:absolute;
top:20px;
right:30px;
.qrBg{
width: 100px;
height:100px;
background-image: url('../images/help/qr.png');
background-size: cover;
}
span{
font-size: 12px;
font-family: Microsoft YaHei;
font-weight: 400;
color: #1F2B4F;
}
}
}
}
}
.helpAdd{
position: absolute;
width: 100%;
height: 100%;
background-color: #fff;
padding: 20px;
.helpWrapTitle{
display: flex;
margin: 20px 0;
font-size: 16px;
font-family: Microsoft YaHei;
font-weight: 400;
color: #1F2B4F;
line-height: 30px;
opacity: 0.85;
.helpTitleIcon{
width: 4px;
height: 22px;
background: #3C98FF;
border-radius: 2px;
margin-top:4px;
margin-right: 20px;
}
}
.helpUploadBox{
width: 800px;
padding: 10px;
border-radius: 3px;
position: relative;
.helpUploadImg{
display: inline-block ;
}
.helpUploadStatistic{
display: inline-block ;
position: absolute;
bottom: 8px;
right: 8px;
color: #8C8C8C;
}
}
}
.ant-carousel .slick-dots-bottom {
bottom: -38px;
}
.ant-carousel .slick-dots li {
background-color: #a6a6a6;
border: 1px solid #a6a6a6;
}
.ant-carousel .slick-dots li.slick-active{
button {
background-color: #2f54eb;
border: 1px solid #2f54eb;
}
}
.problemWrap{
background: #FFFFFF;
border-image: linear-gradient(0deg, #F5F9FF, #DCEAFF) 10 10;
border-radius: 8px;
padding: 20px;
h1{
font-size: 20px;
font-family: Microsoft YaHei;
font-weight: bold;
color: #1F2B4F;
line-height: 30px;
margin-bottom: 20px;
}
p.content{
height: 130px;
font-size: 15px;
font-family: Microsoft YaHei;
font-weight: 400;
color: #1F2B4F;
line-height: 26px;
opacity: 0.65;
}
p.detail{
font-size: 14px;
font-family: Microsoft YaHei;
font-weight: 400;
color: #3C98FF;
line-height: 24px;
cursor: pointer;
}
}
\ No newline at end of file
This source diff could not be displayed because it is too large. You can view the blob instead.
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>首页</title>
<link href="js/antd/antd.css" rel="stylesheet"/>
<link rel="stylesheet/less" type="text/css" href="css/index.less">
</head>
<body>
<div id="app"></div>
<script src="css/less.min.js"></script>
<script src="js/react/react.development.js"></script>
<script src="js/react/react-dom.development.js"></script>
<script src="js/react/browser.min.js"></script>
<script src="js/antd/antd.min.js"></script>
<script src="js/antd/index.umd.js"></script>
<script src="js/jquery.js"></script>
<script type="text/babel">
const Button = antd.Button;
const Input = antd.Input;
const Carousel = antd.Carousel;
const SearchOutlined = icons.SearchOutlined;
const AutoComplete = antd.AutoComplete;
const Modal = antd.Modal;
const useEffect = React.useEffect;
const useState = React.useState;
const getQueryVariable = (variable) => {
const query = window.location.search.substring(1);
const vars = query.split("&");
for (var i=0;i<vars.length;i++) {
const pair = vars[i].split("=");
if(pair[0] === variable){return pair[1];}
}
return(false);
}
const code = getQueryVariable('site_code');
const Help = () => {
const [list, setList] = useState([]);
const [hotList, setHotList] = useState([]);
const [previewVisible, setPreviewVisible] = useState(false);
const [previewImage, setPreviewImage] = useState('');
const [previewTitle, setPreviewTitle] = useState('');
const [options, setOptions] = useState([]);
const [oldOptions, setOldOptions] = useState([]);
const [userList, setUserList] = useState([]);
const [ip, setIp] = useState('');
const getPageData = (pageSize, arr) => {
let page = arr.length / pageSize;
if (page.toString().indexOf('.') !== -1) {
page = parseInt(page) + 1;
}
const pageData = [];
for (let i = 1; i <= page; i++) {
const skipNum = (i - 1) * pageSize;
const data = (skipNum + pageSize >= arr.length) ? arr.slice(skipNum, arr.length) : arr.slice(skipNum, skipNum + pageSize);
pageData.push({
page: i,
data,
})
}
return pageData
}
const goAdd = () => {
window.location.href = './add.html?site_code=' + code;
}
const getList = (ipAddress) => {
const obj = {
pageSize: 20,
pageIndex: 1,
sortFields: '录入时间',
direction: 'desc',
accountName: '售后问题知识库',
info: '',
dateFrom: '',
dateTo: '',
dateGroup: '录入时间',
'request.preventCache': new Date().getTime(),
}
$.ajax({
type: 'GET',
url: ipAddress + '/CityInterface/Services/CityServer_CaseManage/REST/CaseManageREST.svc/GetAccountPageList',
data: obj,
success: function (ret) {
if (ret.say.statusCode === '0000') {
const list = JSON.parse(ret.jsonData);
const arr = [];
list.forEach((item) => {
arr.push({
value: item['问题描述'],
label: item['问题描述'],
other: item,
})
})
const data = getPageData(5, list);
const hotData = list.slice(0, 3);
setOldOptions(arr);
setOptions(arr);
setList(data);
setHotList(hotData)
} else {
setList([])
}
}
})
}
const onSelect = (value) => {
const arr = [...options];
const filterArr = arr.filter(item => item.value === value);
setPreviewVisible(true);
setPreviewImage(filterArr[0].other['图片']);
setPreviewTitle(filterArr[0].other['解决方案']);
}
const handleSearch = (value) => {
if(!value){
setOptions(oldOptions)
} else {
const filterArr = oldOptions.filter(item => item.value.indexOf(value) !== -1);
setOptions(filterArr)
}
}
const getProjectInfo = (ipAddress) => {
const obj = {
pageSize: 200,
pageIndex: 1,
sortFields: '录入时间',
direction: 'desc',
accountName: '环境信息台账',
info: code,
dateFrom: '',
dateTo: '',
dateGroup: '录入时间',
'request.preventCache': new Date().getTime(),
}
$.ajax({
type: 'GET',
url: ipAddress + '/CityInterface/Services/CityServer_CaseManage/REST/CaseManageREST.svc/GetAccountPageList',
data: obj,
success: function (ret) {
if (ret.say.statusCode === '0000') {
const list = JSON.parse(ret.jsonData);
const projectId = list[0]['项目流水号'];
getContactsList(ipAddress , projectId);
}
}
})
}
const getContactsList = (ipAddress, projectId) => {
const obj = {
pageSize: 999,
pageIndex: 1,
accountName: '项目干系人台账',
queryWhere: " and 项目流水号='" + projectId +"' and 成员属性='内部'" ,
'request.preventCache': new Date().getTime(),
}
$.ajax({
type: 'GET',
url: ipAddress + '/CityInterface/Services/CityServer_CaseManage/REST/CaseManageREST.svc/GetAccountPageList',
data: obj,
success: function (ret) {
if (ret.say.statusCode === '0000') {
const list = JSON.parse(ret.jsonData);
const filterArr = list.filter(item => item['项目角色'] === '分公司实施专员');
setUserList(filterArr);
}
}
})
}
const getIp = () => {
$.ajax({
type: 'GET',
url: './config.json',
success: function(data) {
setIp(data.ip);
getList(data.ip);
getProjectInfo(data.ip);
}
})
}
useEffect(() => {
getIp();
}, []);
return (
<div>
<div className='helpContainer'>
<div className='helpHeader'>
<div className='helpTitle'>
<div className='title'>嗨!有什么需要帮助的吗?</div>
<div className='helpSearch'>
<AutoComplete dropdownMatchSelectWidth={250}
style={{width: '100%'}}
onSelect={onSelect}
onSearch={handleSearch}
options={options}>
<Input
bordered={false}
placeholder="请输入问题关键词进行查找"
prefix={<SearchOutlined className="site-form-item-icon"/>}
/>
</AutoComplete>
</div>
<div className='hotSearch'>
<div className='hotTitle'>搜索热词</div>
{
hotList.map((item, key) => {
return <div className='hotName' onClick={() => {
setPreviewVisible(true);
setPreviewImage(item['图片']);
}} key={key}>{item['功能名称']}</div>
})
}
</div>
</div>
</div>
<div className='helpContent'>
<div className='helpWrap'>
<div className='helpWrapTitle'>
<div className='helpTitleIcon'/>
常见问题
</div>
<div className='helpWrapContent'>
<div className='carouselContent'>
<Carousel>
{
list.map((item, key) => {
return <div key={key}>
<div className='commonProblems'>
{
item.data.map((item, num) => {
return <div className='problemWrap' key={num}>
<h1>{item['功能名称']}</h1>
<p className='content'>
{item['问题描述']}
</p>
<p className='detail' onClick={() => {
setPreviewVisible(true);
setPreviewTitle(item['解决方案']);
setPreviewImage(item['图片']);
}}>查看详情</p>
}
</div>
})
}
</div>
</div>
})
}
</Carousel>
</div>
<div className='callback'>
<img src='./images/help/callbackBg.png' alt=""/>
<p>未找到解决方法? 请反馈给我们。</p>
<Button
type="primary"
onClick={goAdd}
shape="round"
styles={{width: 130}}
>
点击反馈
</Button>
</div>
</div>
</div>
<div className='helpWrap'>
<div className='helpWrapTitle'>
<div className='helpTitleIcon'/>
联系我们
</div>
<div className='helpWrapContent'>
<div className='connectWrap phone'>
<div className='connectTitle'>客服专线</div>
<div className='connectContent'>027-8700 2854</div>
<div className='connectInfo'>
周一至周五 9:00 - 18:00
</div>
</div>
<div className='connectWrap qq'>
<div className='connectTitle'>客服QQ</div>
<div className='connectContent'>2692 473 280</div>
<div className='connectInfo'>
周一至周五 9:00 - 18:00
</div>
<div className='qr'>
<div className='qrBg'/>
<span>扫一扫添加QQ好友</span>
</div>
</div>
<div className='connectWrap local'>
<div className='connectTitle'>本地服务支持</div>
<div className='connectContent' style={{fontSize: 15}}>
{
userList.map(item => {
return <div>{item['姓名'] + ':' + item['联系方式']}</div>
})
}
</div>
<div className='connectInfo'>
周一至周五 9:00 - 18:00
</div>
</div>
</div>
</div>
</div>
</div>
{
previewVisible &&
<Modal visible={previewVisible} width={previewImage ? '70%' : '30%'} footer={null} onCancel={() => {
setPreviewVisible(false)
}}
title={null}>
<div style={{ height: 500,overflow: 'auto',marginTop: 20}}>
{
previewTitle && <div className="problemWrap">
<h1>解决方法:</h1>
<p style={{fontSize: 18}}>{previewTitle}</p>
</div>
}
{
previewImage && <img alt="example" style={{width: '100%'}}
src={ip + '/cityinterface/rest/services/filedownload.svc/download/' + previewImage}/>
}
</div>
</Modal>
}
</div>
);
}
// 渲染
ReactDOM.render(<Help/>, document.getElementById('app'));
</script>
</body>
</html>
\ No newline at end of file
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
No preview for this file type
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment