6 changed files with 937 additions and 702 deletions
@ -1,531 +0,0 @@ |
|||
<template> |
|||
<div> |
|||
<div class="dialog-h-content scroll-h"> |
|||
<el-form ref="ref_form" |
|||
:inline="true" |
|||
:model="dataForm" |
|||
:rules="dataRule" |
|||
:disabled="formType === 'detail'" |
|||
class="form"> |
|||
<el-form-item label="组织名称 " |
|||
prop="organizationName" |
|||
label-width="150px" |
|||
style="display: block"> |
|||
<el-input class="item_width_1" |
|||
maxlength="50" |
|||
show-word-limit |
|||
placeholder="请输入组织名称 " |
|||
v-model="dataForm.organizationName"> |
|||
</el-input> |
|||
</el-form-item> |
|||
<el-form-item label="分类名称 " |
|||
prop="categoryCode" |
|||
label-width="150px" |
|||
style="display: block"> |
|||
<el-select v-model="dataForm.categoryCode" |
|||
placeholder="请选择" |
|||
clearable> |
|||
<el-option v-for="item in categoryList" |
|||
:key="item.value" |
|||
:label="item.label" |
|||
:value="item.value"> |
|||
</el-option> |
|||
</el-select> |
|||
</el-form-item> |
|||
<el-form-item label="组织人数 " |
|||
prop="organizationPersonCount" |
|||
label-width="150px" |
|||
style="display: block"> |
|||
<el-input class="item_width_1" |
|||
type="number" |
|||
maxlength="50" |
|||
show-word-limit |
|||
placeholder="请输入组织人数 " |
|||
v-model="dataForm.organizationPersonCount"> |
|||
</el-input> |
|||
</el-form-item> |
|||
|
|||
<el-form-item label="组织成员 " |
|||
prop="organizationPersonnel" |
|||
label-width="150px" |
|||
style="display: block"> |
|||
<div class="m-staffs"> |
|||
<div class="item" |
|||
:key="'staff' + index" |
|||
v-for="(item, index) in dataForm.organizationPersonnel"> |
|||
<el-input class="item_width_1" |
|||
maxlength="50" |
|||
show-word-limit |
|||
placeholder="成员姓名" |
|||
v-model="item.personName" /> |
|||
|
|||
<el-input style="margin-left: 10px" |
|||
class="item_width_1" |
|||
maxlength="50" |
|||
show-word-limit |
|||
placeholder="联系电话" |
|||
v-model="item.personPhone" /> |
|||
|
|||
<el-button style="margin-left: 10px" |
|||
size="small" |
|||
@click="handleDelStaff(index)">删除</el-button> |
|||
</div> |
|||
|
|||
<div class="item-add"> |
|||
<el-button size="small" |
|||
@click="handleAddStaff">添加</el-button> |
|||
</div> |
|||
</div> |
|||
</el-form-item> |
|||
|
|||
<el-form-item label="服务事项" |
|||
prop="serviceItem" |
|||
label-width="150px" |
|||
style="display: block"> |
|||
<el-input class="item_width_1" |
|||
type="textarea" |
|||
maxlength="1000" |
|||
show-word-limit |
|||
:rows="3" |
|||
placeholder="请输入服务事项,不超过1000字" |
|||
v-model="dataForm.serviceItem"></el-input> |
|||
</el-form-item> |
|||
|
|||
<el-form-item label="负责人 " |
|||
prop="principalName" |
|||
label-width="150px" |
|||
style="display: block"> |
|||
<el-input class="item_width_1" |
|||
maxlength="50" |
|||
show-word-limit |
|||
placeholder="请输入负责人 " |
|||
v-model="dataForm.principalName"> |
|||
</el-input> |
|||
</el-form-item> |
|||
|
|||
<el-form-item label="联系电话 " |
|||
prop="principalPhone" |
|||
label-width="150px" |
|||
style="display: block"> |
|||
<el-input class="item_width_1" |
|||
maxlength="50" |
|||
show-word-limit |
|||
placeholder="请输入联系电话 " |
|||
v-model="dataForm.principalPhone"> |
|||
</el-input> |
|||
</el-form-item> |
|||
|
|||
<el-form-item label="创建时间" |
|||
prop="organizationCreatedTime" |
|||
label-width="150px" |
|||
style="display: block"> |
|||
<el-date-picker v-model="dataForm.organizationCreatedTime" |
|||
placeholder="创建时间" |
|||
value-format="yyyy-MM-dd"> |
|||
</el-date-picker> |
|||
</el-form-item> |
|||
|
|||
<el-form-item label="位置坐标" |
|||
prop="longitude" |
|||
label-width="150px" |
|||
style="display: block"> |
|||
<div style="width: 500px"> |
|||
<el-input class="item_width_4" |
|||
maxlength="50" |
|||
placeholder="请输入关键字" |
|||
v-model="dataForm.address"> |
|||
</el-input> |
|||
<el-button style="margin-left: 10px" |
|||
type="primary" |
|||
size="small" |
|||
@click="handleSearchMap">查询</el-button> |
|||
<div id="app" |
|||
class="div_map"></div> |
|||
<div style="margin-top: 10px"> |
|||
<span>经度</span> |
|||
<el-input class="item_width_3" |
|||
maxlength="50" |
|||
placeholder="请输入经度" |
|||
v-model="dataForm.longitude"> |
|||
</el-input> |
|||
<span style="margin-left: 20px">纬度</span> |
|||
<el-input class="item_width_3" |
|||
maxlength="50" |
|||
placeholder="请输入纬度" |
|||
v-model="dataForm.latitude"> |
|||
</el-input> |
|||
</div> |
|||
</div> |
|||
</el-form-item> |
|||
|
|||
<el-form-item label="备注" |
|||
prop="remark" |
|||
label-width="150px" |
|||
style="display: block"> |
|||
<el-input class="item_width_1" |
|||
type="textarea" |
|||
maxlength="500" |
|||
show-word-limit |
|||
:rows="3" |
|||
placeholder="请输入备注,不超过500字" |
|||
v-model="dataForm.remark"></el-input> |
|||
</el-form-item> |
|||
</el-form> |
|||
</div> |
|||
<div class="div_btn resi-btns"> |
|||
<el-button size="small" |
|||
@click="handleCancle">取 消</el-button> |
|||
<el-button v-if="formType != 'detail'" |
|||
type="primary" |
|||
size="small" |
|||
:disabled="btnDisable" |
|||
@click="handleComfirm">确 定</el-button> |
|||
</div> |
|||
</div> |
|||
</template> |
|||
|
|||
<script> |
|||
import { mapGetters } from "vuex"; |
|||
import { Loading } from "element-ui"; // 引入Loading服务 |
|||
import { requestPost } from "@/js/dai/request"; |
|||
import formVltHelper from "dai-js/tools/formVltHelper"; |
|||
|
|||
var map; |
|||
var search; |
|||
var markers; |
|||
var infoWindowList; |
|||
let loading; // 加载动画 |
|||
|
|||
export default { |
|||
data () { |
|||
return { |
|||
formType: "add", //表单操作类型 add新增,edit编辑,detail详情 |
|||
|
|||
btnDisable: false, |
|||
|
|||
orgId: "", |
|||
dataForm: { |
|||
organizationName: "", |
|||
categoryCode: "", |
|||
serviceItem: "", |
|||
organizationPersonCount: "", |
|||
principalName: "", |
|||
principalPhone: "", |
|||
organizationCreatedTime: "", |
|||
address: "", |
|||
remark: "", |
|||
longitude: "", |
|||
latitude: "", |
|||
organizationPersonnel: [], |
|||
}, |
|||
categoryList: [], |
|||
}; |
|||
}, |
|||
components: {}, |
|||
computed: { |
|||
dataRule () { |
|||
return { |
|||
organizationName: [ |
|||
{ required: true, message: "组织名称 不能为空", trigger: "blur" }, |
|||
{ |
|||
min: 1, |
|||
max: 50, |
|||
message: "组织名称 长度在 1 到 50个字符", |
|||
trigger: "blur", |
|||
}, |
|||
], |
|||
categoryCode: [ |
|||
{ required: true, message: "分类名称不能为空", trigger: "blur" }, |
|||
], |
|||
organizationPersonCount: [ |
|||
{ required: true, message: "组织人数不能为空", trigger: "blur" }, |
|||
], |
|||
serviceItem: [ |
|||
{ required: true, message: "服务事项不能为空", trigger: "blur" }, |
|||
], |
|||
principalName: [ |
|||
{ required: true, message: "负责人不能为空", trigger: "blur" }, |
|||
], |
|||
principalPhone: [ |
|||
{ required: true, message: "联系电话不能为空", trigger: "blur" }, |
|||
], |
|||
longitude: [ |
|||
{ required: true, message: "位置坐标不能为空", trigger: "blur" }, |
|||
], |
|||
}; |
|||
}, |
|||
}, |
|||
props: {}, |
|||
watch: {}, |
|||
|
|||
async created () { |
|||
this.getCategoryList(); |
|||
}, |
|||
async mounted () { |
|||
this.initMap(); |
|||
}, |
|||
|
|||
methods: { |
|||
async getCategoryList () { |
|||
const url = "/sys/dict/data/dictlist"; |
|||
const params = { |
|||
dictType: "self_org_category", |
|||
}; |
|||
const { data, code, msg } = await requestPost(url, params); |
|||
if (code === 0) { |
|||
this.categoryList = data; |
|||
} else { |
|||
this.$message.error(msg); |
|||
} |
|||
}, |
|||
handleAddStaff () { |
|||
this.dataForm.organizationPersonnel = [ |
|||
...this.dataForm.organizationPersonnel, |
|||
{ personName: "", personPhone: "" }, |
|||
]; |
|||
}, |
|||
handleDelStaff (index) { |
|||
const { organizationPersonnel } = this.dataForm; |
|||
organizationPersonnel.splice(index, 1); |
|||
this.dataForm.organizationPersonnel = organizationPersonnel; |
|||
}, |
|||
// 地图初始化函数,本例取名为init,开发者可根据实际情况定义 |
|||
initMap () { |
|||
// 定义地图中心点坐标 |
|||
var center = new window.TMap.LatLng(36.0722275, 120.38945519); |
|||
// 定义map变量,调用 TMap.Map() 构造函数创建地图 |
|||
map = new window.TMap.Map(document.getElementById("app"), { |
|||
center: center, // 设置地图中心点坐标 |
|||
zoom: 17.2, // 设置地图缩放级别 |
|||
pitch: 43.5, // 设置俯仰角 |
|||
rotation: 45, // 设置地图旋转角度 |
|||
}); |
|||
|
|||
search = new window.TMap.service.Search({ pageSize: 10 }); |
|||
// 新建一个地点搜索类 |
|||
markers = new TMap.MultiMarker({ |
|||
map: map, |
|||
geometries: [], |
|||
}); |
|||
infoWindowList = Array(10); |
|||
|
|||
// 监听地图平移结束 |
|||
map.on("panend", () => { |
|||
this.handleMoveCenter(); |
|||
}); |
|||
this.handleMoveCenter(); |
|||
}, |
|||
|
|||
setMarker (lat, lng) { |
|||
markers.setGeometries([]); |
|||
markers.add([ |
|||
{ |
|||
id: "4", |
|||
styleId: "marker", |
|||
position: new TMap.LatLng(lat, lng), |
|||
properties: { |
|||
title: "marker4", |
|||
}, |
|||
}, |
|||
]); |
|||
}, |
|||
|
|||
handleSearchMap () { |
|||
infoWindowList.forEach((infoWindow) => { |
|||
infoWindow.close(); |
|||
}); |
|||
infoWindowList.length = 0; |
|||
markers.setGeometries([]); |
|||
// 在地图显示范围内以给定的关键字搜索地点 |
|||
search |
|||
.searchRectangle({ |
|||
keyword: this.dataForm.address, |
|||
bounds: map.getBounds(), |
|||
}) |
|||
.then((result) => { |
|||
let { data } = result; |
|||
if (Array.isArray(data) && data.length > 0) { |
|||
const { |
|||
location: { lat, lng }, |
|||
} = data[0]; |
|||
map.setCenter(new TMap.LatLng(lat, lng)); |
|||
this.setMarker(lat, lng); |
|||
this.dataForm.latitude = lat; |
|||
this.dataForm.longitude = lng; |
|||
} else { |
|||
this.$message.error("未检索到相关位置坐标"); |
|||
} |
|||
}); |
|||
}, |
|||
|
|||
handleMoveCenter () { |
|||
//修改地图中心点 |
|||
const center = map.getCenter(); |
|||
const lat = center.getLat(); |
|||
const lng = center.getLng(); |
|||
this.dataForm.latitude = lat; |
|||
this.dataForm.longitude = lng; |
|||
this.setMarker(lat, lng); |
|||
}, |
|||
|
|||
async initForm (type, row) { |
|||
this.$refs.ref_form.resetFields(); |
|||
|
|||
this.formType = type; |
|||
console.log(row); |
|||
if (row) { |
|||
this.dataForm = { ...this.dataForm, ...row }; |
|||
this.orgId = this.dataForm.orgId; |
|||
map.setCenter(new TMap.LatLng(row.latitude, row.longitude)); |
|||
} |
|||
}, |
|||
|
|||
async handleComfirm () { |
|||
this.btnDisable = true; |
|||
setTimeout(() => { |
|||
this.btnDisable = false; |
|||
}, 10000); |
|||
this.$refs["ref_form"].validate((valid, messageObj) => { |
|||
if (!valid) { |
|||
app.util.validateRule(messageObj); |
|||
this.btnDisable = false; |
|||
} else { |
|||
// if (!formVltHelper.userOrMobile(this.dataForm.principalPhone)) { |
|||
// return this.$message({ |
|||
// type: "error", |
|||
// message: "手机号格式有误", |
|||
// }); |
|||
// } |
|||
const { |
|||
dataForm: { organizationPersonnel }, |
|||
} = this; |
|||
let vlt = organizationPersonnel.every((item) => { |
|||
return ( |
|||
item.personName && |
|||
item.personPhone |
|||
); |
|||
}); |
|||
if (!vlt) { |
|||
return this.$message({ |
|||
type: "error", |
|||
message: "成员姓名/手机号为空", |
|||
}); |
|||
} |
|||
this.submit(); |
|||
} |
|||
}); |
|||
}, |
|||
|
|||
async submit () { |
|||
let url = ""; |
|||
if (this.formType === "add") { |
|||
url = "/heart/iccommunityselforganization/addcommunityselforganization"; |
|||
// url = "http://yapi.elinkservice.cn/mock/245/gov/org/neighborhood/neighborhoodadd" |
|||
} else { |
|||
url = |
|||
"/heart/iccommunityselforganization/editcommunityselforganization"; |
|||
|
|||
this.dataForm.orgId = this.orgId; |
|||
} |
|||
|
|||
const { data, code, msg } = await requestPost(url, this.dataForm); |
|||
|
|||
if (code === 0) { |
|||
this.$message({ |
|||
type: "success", |
|||
message: "操作成功", |
|||
}); |
|||
this.resetData(); |
|||
this.$emit("dialogOk"); |
|||
this.btnDisable = false; |
|||
} else { |
|||
this.btnDisable = false; |
|||
this.$message.error(msg); |
|||
} |
|||
}, |
|||
|
|||
handleCancle () { |
|||
this.resetData(); |
|||
this.$emit("dialogCancle"); |
|||
}, |
|||
resetData () { |
|||
this.orgId = ""; |
|||
this.dataForm = { |
|||
organizationName: "", |
|||
serviceItem: "", |
|||
organizationPersonCount: "", |
|||
categoryCode: "", |
|||
principalName: "", |
|||
principalPhone: "", |
|||
organizationCreatedTime: "", |
|||
address: "", |
|||
remark: "", |
|||
longitude: "", |
|||
latitude: "", |
|||
organizationPersonnel: [], |
|||
}; |
|||
}, |
|||
// 开启加载动画 |
|||
startLoading () { |
|||
loading = Loading.service({ |
|||
lock: true, // 是否锁定 |
|||
text: "正在加载……", // 加载中需要显示的文字 |
|||
background: "rgba(0,0,0,.7)", // 背景颜色 |
|||
}); |
|||
}, |
|||
// 结束加载动画 |
|||
endLoading () { |
|||
// clearTimeout(timer); |
|||
if (loading) { |
|||
loading.close(); |
|||
} |
|||
}, |
|||
}, |
|||
}; |
|||
</script> |
|||
|
|||
<style lang="scss" scoped> |
|||
.item_width_1 { |
|||
width: 500px; |
|||
} |
|||
.item_width_2 { |
|||
width: 400px; |
|||
} |
|||
.item_width_3 { |
|||
margin-left: 10px; |
|||
width: 200px; |
|||
} |
|||
.item_width_4 { |
|||
width: 200px; |
|||
} |
|||
|
|||
.div_map { |
|||
margin-top: 10px; |
|||
} |
|||
|
|||
.div_btn { |
|||
// display: flex; |
|||
// justify-content: flex-end; |
|||
} |
|||
.el-tabs { |
|||
margin: 0 20px; |
|||
} |
|||
.el-upload__tip { |
|||
color: rgb(155, 155, 155); |
|||
margin: 0; |
|||
} |
|||
.form { |
|||
margin-top: 30px; |
|||
} |
|||
|
|||
.m-staffs { |
|||
width: 468px; |
|||
.item { |
|||
display: flex; |
|||
justify-content: space-around; |
|||
margin-bottom: 7px; |
|||
} |
|||
.item-add { |
|||
} |
|||
} |
|||
</style> |
@ -0,0 +1,536 @@ |
|||
<template> |
|||
<div class="m-record" style="padding: 0 20px"> |
|||
<h3>巡查记录</h3> |
|||
<div class="mt10" v-if="formType == 'edit'"> |
|||
<el-button |
|||
size="small" |
|||
class="diy-button--add" |
|||
:disabled="btnDisabled || disabled" |
|||
@click="handleAdd" |
|||
>新增</el-button |
|||
> |
|||
</div> |
|||
<el-table |
|||
:data="tableData" |
|||
row-key="id" |
|||
border |
|||
style="width: 100%" |
|||
class="resi-table" |
|||
height="400px" |
|||
:header-cell-style="getRowClass" |
|||
> |
|||
<el-table-column label="序号" type="index" align="center" width="50"> |
|||
</el-table-column> |
|||
|
|||
<el-table-column |
|||
prop="patrolTime" |
|||
label="巡查时间" |
|||
align="center" |
|||
width="200px" |
|||
> |
|||
<template slot-scope="scope"> |
|||
<el-date-picker |
|||
v-if="scope.row.isEdit" |
|||
v-model="scope.row.patrolTime" |
|||
type="date" |
|||
class="input-width" |
|||
value-format="yyyy-MM-dd" |
|||
placeholder="选择日期" |
|||
> |
|||
</el-date-picker> |
|||
<div v-else class="div-content">{{ scope.row.patrolTime }}</div> |
|||
</template> |
|||
</el-table-column> |
|||
|
|||
<el-table-column |
|||
prop="staffId" |
|||
label="巡查人员" |
|||
align="center" |
|||
width="200px" |
|||
> |
|||
<template slot-scope="scope"> |
|||
<el-select |
|||
v-if="scope.row.isEdit" |
|||
v-model="scope.row.staffId" |
|||
placeholder="请选择" |
|||
class="input-width" |
|||
@change="handleChangeStaff(scope.row)" |
|||
clearable |
|||
> |
|||
<el-option |
|||
v-for="subItem in optionStaff" |
|||
:key="subItem.value" |
|||
:label="subItem.label" |
|||
:value="subItem.value" |
|||
> |
|||
</el-option> |
|||
</el-select> |
|||
<div v-else class="div-content">{{ scope.row.staffName }}</div> |
|||
</template> |
|||
</el-table-column> |
|||
|
|||
<el-table-column |
|||
prop="mobile" |
|||
label="联系电话" |
|||
align="center" |
|||
width="200px" |
|||
> |
|||
<template slot-scope="scope"> |
|||
<el-input |
|||
v-if="scope.row.isEdit" |
|||
type="number" |
|||
v-model="scope.row.mobile" |
|||
placeholder="请输入" |
|||
class="input-width" |
|||
clearable |
|||
disabled |
|||
></el-input> |
|||
<div v-else class="div-content">{{ scope.row.mobile }}</div> |
|||
</template> |
|||
</el-table-column> |
|||
|
|||
<el-table-column |
|||
prop="result" |
|||
label="巡查结果" |
|||
align="center" |
|||
width="200px" |
|||
> |
|||
<template slot-scope="scope"> |
|||
<el-select |
|||
v-if="scope.row.isEdit" |
|||
v-model="scope.row.result" |
|||
placeholder="请选择" |
|||
class="input-width" |
|||
size="small" |
|||
clearable |
|||
> |
|||
<el-option |
|||
v-for="subItem in optionResult" |
|||
:key="subItem.value" |
|||
:label="subItem.label" |
|||
:value="subItem.value" |
|||
> |
|||
</el-option> |
|||
</el-select> |
|||
<div v-else class="div-content">{{ scope.row.resultName }}</div> |
|||
</template> |
|||
</el-table-column> |
|||
|
|||
<el-table-column |
|||
prop="detailed" |
|||
label="隐患明细" |
|||
align="center" |
|||
width="200px" |
|||
> |
|||
<template slot-scope="scope"> |
|||
<el-input |
|||
v-if="scope.row.isEdit" |
|||
type="number" |
|||
v-model="scope.row.detailed" |
|||
placeholder="请输入" |
|||
class="input-width" |
|||
maxlength="500" |
|||
clearable |
|||
></el-input> |
|||
<div v-else class="div-content">{{ scope.row.detailed }}</div> |
|||
</template> |
|||
</el-table-column> |
|||
|
|||
<el-table-column |
|||
prop="imgList" |
|||
label="图片列表" |
|||
align="center" |
|||
width="150px" |
|||
> |
|||
<template slot-scope="scope"> |
|||
<div v-if="scope.row.isEdit"> |
|||
<el-upload |
|||
class="avatar-uploader" |
|||
:action="uploadUrl" |
|||
:data="{ customerId: customerId }" |
|||
:show-file-list="true" |
|||
:limit="3" |
|||
:file-list="scope.row.imgShowList" |
|||
:on-success="(res) => handleImgSuccess(res, scope.row)" |
|||
:on-remove="(res) => handleImgRemove(res, scope.row)" |
|||
list-type="picture" |
|||
:before-upload="beforeImgUpload" |
|||
> |
|||
<i class="el-icon-plus avatar-uploader-icon"></i> 最多三张图片 |
|||
</el-upload> |
|||
</div> |
|||
|
|||
<div v-else class="div-content"> |
|||
<el-image |
|||
v-if="scope.row.imgList.length > 0" |
|||
style="width: 100px; height: 50px" |
|||
:src="scope.row.imgList[0]" |
|||
fit="cover" |
|||
:preview-src-list="scope.row.imgList" |
|||
></el-image> |
|||
</div> |
|||
</template> |
|||
</el-table-column> |
|||
|
|||
<el-table-column |
|||
prop="reviewTime" |
|||
label="拟复查时间" |
|||
align="center" |
|||
width="200px" |
|||
> |
|||
<template slot-scope="scope"> |
|||
<el-date-picker |
|||
v-if="scope.row.isEdit" |
|||
v-model="scope.row.reviewTime" |
|||
type="date" |
|||
class="input-width" |
|||
value-format="yyyy-MM-dd" |
|||
placeholder="选择日期" |
|||
> |
|||
</el-date-picker> |
|||
<div v-else class="div-content">{{ scope.row.patrolTime }}</div> |
|||
</template> |
|||
</el-table-column> |
|||
|
|||
<el-table-column v-if="!disabled" label="操作" align="center" width="120"> |
|||
<template slot-scope="scope"> |
|||
<template v-if="scope.row.isEdit"> |
|||
<el-button |
|||
@click="handleEdit(scope.row)" |
|||
type="text" |
|||
size="small" |
|||
class="btn-color-edit" |
|||
>保存</el-button |
|||
> |
|||
<el-button |
|||
@click="handleChange(scope.row, 'cancle')" |
|||
type="text" |
|||
size="small" |
|||
class="btn-color-edit" |
|||
>取消</el-button |
|||
> |
|||
</template> |
|||
<template v-else> |
|||
<el-button |
|||
v-if="formType == 'edit'" |
|||
@click="handleChange(scope.row, 'edit')" |
|||
type="text" |
|||
size="small" |
|||
:disabled="disabled" |
|||
class="btn-color-edit" |
|||
>修改</el-button |
|||
> |
|||
<el-popconfirm |
|||
v-if="formType == 'edit'" |
|||
title="删除之后无法恢复,确认删除?" |
|||
@onConfirm="del(scope.row)" |
|||
> |
|||
<el-button |
|||
slot="reference" |
|||
type="text" |
|||
size="small" |
|||
class="btn-color-del" |
|||
style="margin-left: 10px" |
|||
>删除</el-button |
|||
> |
|||
</el-popconfirm> |
|||
</template> |
|||
</template> |
|||
</el-table-column> |
|||
</el-table> |
|||
</div> |
|||
</template> |
|||
|
|||
<script> |
|||
import { requestPost } from "@/js/dai/request"; |
|||
|
|||
export default { |
|||
props: { |
|||
enterpriseId: { |
|||
type: String, |
|||
default: "", |
|||
}, |
|||
enterpriseInfo: { |
|||
type: Object, |
|||
default: () => ({}), |
|||
}, |
|||
disabled: { |
|||
type: Boolean, |
|||
default: false, |
|||
}, |
|||
formType: { |
|||
type: String, |
|||
default: "", |
|||
}, |
|||
}, |
|||
data() { |
|||
return { |
|||
uploadUrl: window.SITE_CONFIG["apiURL"] + "/oss/file/uploadqrcodeV2", |
|||
customerId: localStorage.getItem("customerId"), |
|||
|
|||
btnDisabled: false, |
|||
btnType: "cancle", |
|||
isEdit: false, |
|||
tableData: [], |
|||
tempRow: {}, |
|||
|
|||
optionResult: [ |
|||
{ |
|||
label: "合格", |
|||
value: "0", |
|||
}, |
|||
{ |
|||
label: "不合格", |
|||
value: "1", |
|||
}, |
|||
], |
|||
optionStaff: [ |
|||
// { |
|||
// label: "人名", |
|||
// value: "staffId", |
|||
// }, |
|||
], |
|||
}; |
|||
}, |
|||
|
|||
computed: { |
|||
allowOperate() { |
|||
const { |
|||
enterpriseInfo: { agencyId }, |
|||
} = this; |
|||
return agencyId && agencyId == this.$store.state.user.agencyId; |
|||
}, |
|||
}, |
|||
watch: { |
|||
enterpriseId: { |
|||
handler(val) { |
|||
console.log("val------points", val); |
|||
if (val.length > 0) { |
|||
this.btnDisabled = false; |
|||
this.getList(); |
|||
} else this.btnDisabled = true; |
|||
}, |
|||
immediate: true, |
|||
}, |
|||
}, |
|||
|
|||
created() { |
|||
this.getOptionStaff(); |
|||
}, |
|||
|
|||
methods: { |
|||
beforeImgUpload(file) { |
|||
console.log(file); |
|||
const isLt1M = file.size / 1024 / 1024 < 10; |
|||
const srcType = file.type; |
|||
const format = file.name.split(".").pop(); |
|||
|
|||
if (!isLt1M) { |
|||
this.$message.error("上传文件大小不能超过 10MB!"); |
|||
return false; |
|||
} |
|||
if (srcType.indexOf("image") == -1) { |
|||
this.$message.error("仅限图片格式"); |
|||
return false; |
|||
} |
|||
return true; |
|||
}, |
|||
|
|||
handleImgSuccess(res, row) { |
|||
console.log("handleImgSuccess", res); |
|||
if (res.code === 0 && res.msg === "success") { |
|||
row.imgList.push(res.data.url); |
|||
this.computeImgShowList(row); |
|||
} else { |
|||
this.$message.error(res.msg); |
|||
} |
|||
}, |
|||
|
|||
computeImgShowList(row) { |
|||
row.imgShowList = row.imgList.map((url) => { |
|||
return { name: "", url }; |
|||
}); |
|||
}, |
|||
|
|||
handleImgRemove(file, row) { |
|||
console.log("handleImgRemove", file); |
|||
if (file.response) { |
|||
row.imgList = row.imgList.map( |
|||
(item) => item !== file.response.data.url |
|||
); |
|||
this.computeImgShowList(row); |
|||
} |
|||
}, |
|||
|
|||
getRowClass({ rowIndex, columnIndex }) { |
|||
if (rowIndex === 0) { |
|||
return "background: #2195fe; color: #fff;"; |
|||
} |
|||
}, |
|||
|
|||
handleChange(row, type) { |
|||
console.log("type----", type); |
|||
if (type == "cancle") { |
|||
row = { ...this.tempRow }; |
|||
row.isEdit = false; |
|||
if (this.btnType == "add") this.tableData.pop(); |
|||
this.getList(); |
|||
console.log("row----", row); |
|||
} else { |
|||
this.tempRow = { ...row }; |
|||
row.isEdit = true; |
|||
} |
|||
this.btnType = type; |
|||
this.isEdit = !this.isEdit; |
|||
}, |
|||
|
|||
handleChangeStaff(row) { |
|||
const { staffId } = row; |
|||
const { optionStaff } = this; |
|||
let item = optionStaff.find((item) => item.value == staffId); |
|||
if (item) { |
|||
row.staffName = item.name; |
|||
row.mobile = item.mobile; |
|||
} |
|||
}, |
|||
|
|||
async getOptionStaff() { |
|||
let url = `/data/aggregator/org/staff-select-list/${this.$store.state.user.agencyId}`; |
|||
const { data, code, msg } = await requestPost(url, {}); |
|||
|
|||
if (code === 0) { |
|||
this.optionStaff = data || []; |
|||
} else { |
|||
this.$message.error("请求工作人员数据失败!"); |
|||
} |
|||
}, |
|||
|
|||
async handleEdit(row) { |
|||
if (this.btnType == "add") this.save(row); |
|||
else this.edit(row); |
|||
}, |
|||
|
|||
handleAdd() { |
|||
this.btnType = "add"; |
|||
this.isEdit = true; |
|||
|
|||
const item = { |
|||
isEdit: true, |
|||
enterpriseId: this.enterpriseId, |
|||
patrolTime: "", |
|||
staffId: "", |
|||
staffName: "", |
|||
mobile: "", |
|||
result: "", |
|||
imgList: [], |
|||
reviewTime: "", |
|||
}; |
|||
this.computeImgShowList(item); |
|||
this.tableData.push(item); |
|||
}, |
|||
|
|||
async save(row) { |
|||
const params = { |
|||
partyMemberId: this.enterpriseId, |
|||
...row, |
|||
}; |
|||
await this.$http |
|||
.post("/gov/org/enterprise/addorupdate-patrol", params) |
|||
.then(({ data: res }) => { |
|||
if (res.code !== 0) { |
|||
return this.$message.error(res.msg); |
|||
} else { |
|||
this.$message.success("保存成功"); |
|||
row.isEdit = false; |
|||
this.isEdit = false; |
|||
this.btnType = "cancle"; |
|||
this.getList(); |
|||
} |
|||
}) |
|||
.catch((err) => { |
|||
console.log("err", err); |
|||
return this.$message.error("网络错误"); |
|||
}); |
|||
}, |
|||
|
|||
async edit(row) { |
|||
const params = { |
|||
...row, |
|||
}; |
|||
|
|||
await this.$http |
|||
.post("/gov/org/enterprise/addorupdate-patrol", params) |
|||
.then(({ data: res }) => { |
|||
if (res.code !== 0) { |
|||
return this.$message.error(res.msg); |
|||
} else { |
|||
this.$message.success("保存成功"); |
|||
row.isEdit = false; |
|||
this.isEdit = false; |
|||
this.getList(); |
|||
} |
|||
}) |
|||
.catch((err) => { |
|||
console.log("err", err); |
|||
return this.$message.error("网络错误"); |
|||
}); |
|||
}, |
|||
|
|||
async del(row) { |
|||
await this.$http |
|||
.post(`/gov/org/enterprise/del-patrol/${row.patrolId}`) |
|||
.then(({ data: res }) => { |
|||
if (res.code !== 0) { |
|||
return this.$message.error(res.msg); |
|||
} else { |
|||
this.$message.success("删除成功"); |
|||
this.getList(); |
|||
} |
|||
}) |
|||
.catch((err) => { |
|||
console.log("err", err); |
|||
return this.$message.error("网络错误"); |
|||
}); |
|||
}, |
|||
|
|||
async getList() { |
|||
const { enterpriseId } = this; |
|||
|
|||
const params = {}; |
|||
|
|||
await this.$http |
|||
.post(`/gov/org/enterprise/patrollist/${enterpriseId}`, { |
|||
params, |
|||
}) |
|||
.then(({ data: res }) => { |
|||
if (res.code !== 0) { |
|||
return this.$message.error(res.msg); |
|||
} else { |
|||
this.tableData = res.data.list.map((item) => { |
|||
this.computeImgShowList(item); |
|||
return { |
|||
...item, |
|||
isEdit: false, |
|||
}; |
|||
}); |
|||
} |
|||
}) |
|||
.catch((err) => { |
|||
console.log("err", err); |
|||
return this.$message.error("网络错误"); |
|||
}); |
|||
}, |
|||
}, |
|||
}; |
|||
</script> |
|||
|
|||
<style lang="scss" scoped> |
|||
.m-record { |
|||
.mt10 { |
|||
margin-bottom: 10px; |
|||
} |
|||
.input-width { |
|||
width: 170px; |
|||
} |
|||
} |
|||
</style> |
Loading…
Reference in new issue