diff --git a/src/assets/scss/modules/management/secretaryLog.scss b/src/assets/scss/modules/management/secretaryLog.scss new file mode 100644 index 00000000..a62569a1 --- /dev/null +++ b/src/assets/scss/modules/management/secretaryLog.scss @@ -0,0 +1,49 @@ +.div_form { + margin: 20px 50px; +} +.form_item { + display: flex; + justify-content: flex-start; + font-size: 15px; + + .item_title { + text-align: right; + + flex: 0 0 150px; + line-height: 36px; + } + + .item_content { + margin-left: 30px; + line-height: 36px; + } + + .attach_item { + display: flex; + justify-content: flex-start; + align-items: center; + margin-left: 30px; + line-height: 36px; + + .attach_item_name { + margin-left: 10px; + color: #3e8ef7; + text-decoration: underline; + } + .attach_item_name:hover { + cursor: pointer; + color: #1461c7; + } + } +} + +.div_btn { + margin-top: 15px; + display: flex; + width: 100%; + justify-content: center; + + .btn_right { + margin-left: 50px; + } +} diff --git a/src/js/store/index.js b/src/js/store/index.js index a803ca87..2b254ac2 100644 --- a/src/js/store/index.js +++ b/src/js/store/index.js @@ -4,9 +4,11 @@ import cloneDeep from "lodash/cloneDeep"; import user from "./modules/user"; import app from "./modules/app"; import tagsView from "./modules/tagsView"; +import { requestPost } from "@/js/dai/request"; +import { dateFormats } from "@/utils/index"; Vue.use(Vuex); - +let interTimer = null export default new Vuex.Store({ namespaced: true, state: { @@ -38,6 +40,7 @@ export default new Vuex.Store({ activeName: "", }, tipsList: [], + tipsTime: [], inIframe: window.self !== window.top, }, modules: { @@ -52,5 +55,70 @@ export default new Vuex.Store({ state[key] = cloneDeep(window.SITE_CONFIG["storeState"][key]); }); }, + SET_TIPS_LIST(state, tipsList) { + let _list = state.tipsList + // state.tipsList = _list.concat(tipsList) + state.tipsList = tipsList + }, + SET_TIPS_TIME(state, time) { + state.tipsTime = time + } }, + actions: { + clearInter() { + clearInterval(interTimer) + }, + setInterval({ commit, dispatch, state }) { + interTimer = setInterval(() => { + const _t = dateFormats('YYYY-mm-dd HH:MM', (new Date(new Date().toLocaleDateString()).getTime())) + const _tt = new Date(_t).getTime() + console.log('230000---', _t) + const t = dateFormats('YYYY-mm-dd HH:MM', (new Date().getTime())) + const nt = new Date(t).getTime() + // 判断当前时间是否为 00:00 + if (nt == _tt) { + dispatch('setTipsTime') + return + } + let times = state.tipsTime + console.log('nt---000', nt) + state.tipsTime.forEach((item, index) => { + const _t = new Date(item).getTime() + if (_t == nt) { + clearInterval(interTimer) + dispatch('setTipsList', item) + times.splice(index, 1) + commit('SET_TIPS_TIME', times) + } + }) + }, 10000) + }, + setTipsList({ commit }, time) { + return new Promise(async (resolve, reject) => { + const url = '/gov/project/memoAttr/memosToRemind' + const params = { + remindTime: time || '' + } + const { data, code, msg } = await requestPost(url, params) + if (code === 0) { + commit('SET_TIPS_LIST', data) + resolve() + } else reject(msg) + }) + }, + setTipsTime({ commit, dispatch }) { + return new Promise(async (resolve, reject) => { + if (interTimer) clearInterval(interTimer) + const url = '/gov/project/memoAttr/memoTime' + + const { data, code, msg } = await requestPost(url) + if (code === 0) { + + commit('SET_TIPS_TIME', data) + if (data.length > 0) dispatch('setInterval') + resolve() + } else reject(msg) + }) + } + } }); diff --git a/src/utils/index.js b/src/utils/index.js index ad9c9e00..fe742c9a 100644 --- a/src/utils/index.js +++ b/src/utils/index.js @@ -93,3 +93,25 @@ export function treeDataTranslate(data, id = 'id', pid = 'pid') { } return res } + +// 时间格式化 +export function dateFormats(fmt, date) { + let ret + const _date = new Date(date) + const opt = { + 'Y+': _date.getFullYear().toString(), // 年 + 'm+': (_date.getMonth() + 1).toString(), // 月 + 'd+': _date.getDate().toString(), // 日 + 'H+': _date.getHours().toString(), // 时 + 'M+': _date.getMinutes().toString(), // 分 + 'S+': _date.getSeconds().toString() // 秒 + // 有其他格式化字符需求可以继续添加,必须转化成字符串 + } + for (const k in opt) { + ret = new RegExp('(' + k + ')').exec(fmt) + if (ret) { + fmt = fmt.replace(ret[1], (ret[1].length === 1) ? (opt[k]) : (opt[k].padStart(ret[1].length, '0'))) + } + } + return fmt +} diff --git a/src/views/main-content.vue b/src/views/main-content.vue index 5ce37b09..569b149f 100644 --- a/src/views/main-content.vue +++ b/src/views/main-content.vue @@ -70,24 +70,29 @@ - + + + + + + + + - - - - - - - - - - - - - @@ -96,19 +101,26 @@ import { isURL } from "@/utils/validate"; import Cookie from "js-cookie"; import Tips from './tips.vue' +import { requestPost } from "@/js/dai/request"; +import workForm from './modules/secretaryLog/workLog/form.vue' +import dForm from './modules/secretaryLog/difficulty/difficultyForm.vue' +import hForm from './modules/secretaryLog/humanisticCare/careForm.vue' export default { components: { - Tips + Tips, + workForm, + dForm, + hForm }, data() { return { + dialogTitle: '', dialogFormVisible: false, iframeUrl: "", token: "", customerId: "", - form: { - - }, + form: {}, + formType: '', formLabelWidth: '120px', tipsList: [] }; @@ -120,7 +132,12 @@ export default { this.token = localStorage.getItem("token"); this.customerId = localStorage.getItem("customerId"); - // this.loopTips() + this.loopTips() + }, + computed: { + msgList() { + return this.$store.state.tipsList + } }, methods: { changeCustomerName(customerName) { @@ -207,17 +224,64 @@ export default { iframe.postMessage({ name: "lalalal" }, "*"); }, loopTips() { - let id = 1 - this.timer = setInterval(() => { - id = id + 1 - if (id == 5) clearInterval(this.timer) - this.tipsList.push(id) - console.log('id------0', id) - }, 1000) + this.$store.dispatch('setTipsList') + this.$store.dispatch('setTipsTime') + // let id = 1 + // this.timer = setInterval(() => { + // id = id + 1 + // if (id == 5) clearInterval(this.timer) + // this.tipsList.push(id) + // console.log('id------0', id) + // }, 1000) }, - handleLook(id) { - console.log('look-----', id) + async closeTips(memoId) { + const url = '/gov/project/memoAttr/setReaded' + const params = { + memoId + } + const { data, code, msg } = await requestPost(url, params) + if (code != 0) this.$message.error(msg) + }, + async getInfo(item) { + const urls = { + work_diary: '/gov/project/memoWorkDiary', + concern: '/gov/project/memoConcern', + difficulty: '/gov/project/memoDifficulty/detail' + } + const params = { + id: item.memoId, + readFlag: 0 + } + const { data, code, msg } = await requestPost(urls[item.type], params) + if (code == 0) { + this.form = { ...data } + } else this.$message.error(msg) + }, + handleClose(item, index) { + console.log('close-----', item) + this.$store.state.tipsList.splice(index, 1) + this.closeTips(item.memoId) + }, + async handleLook(item, index) { + console.log('look-----', item) + const formType = { + work_diary: 'ref_form', + concern: 'concern_form', + difficulty: 'difficulty_form' + } + this.dialogTitle = item.typeName + // await this.getInfo(item) + this.formType = item.type this.dialogFormVisible = true + + console.log('ref0-----', this.formType) + this.$nextTick(() => { + console.log('this.$refs-----', this.$refs) + this.$refs[formType[item.type]].initForm('look', item.memoId) + this.$store.state.tipsList.splice(index, 1) + this.closeTips(item.memoId) + }) + } }, }; diff --git a/src/views/modules/secretaryLog/difficulty/difficultyDetail.vue b/src/views/modules/secretaryLog/difficulty/difficultyDetail.vue index 8e979669..f90289b9 100644 --- a/src/views/modules/secretaryLog/difficulty/difficultyDetail.vue +++ b/src/views/modules/secretaryLog/difficulty/difficultyDetail.vue @@ -1,99 +1,63 @@ + - diff --git a/src/views/modules/secretaryLog/difficulty/difficultyForm.vue b/src/views/modules/secretaryLog/difficulty/difficultyForm.vue index b6708343..02760a1d 100644 --- a/src/views/modules/secretaryLog/difficulty/difficultyForm.vue +++ b/src/views/modules/secretaryLog/difficulty/difficultyForm.vue @@ -6,73 +6,24 @@ :inline="true" :model="formData" :rules="dataRule" - :disabled="formType === 'detail'" + :disabled="formType==='look'" class="form"> - - - - {{item.label}} - - - - - - - - - - {{item.label}} - - - - - - - + :rows="3" + placeholder="请输入内容" + v-model="formData.content"> - - - -
- - -

-
+ placeholder="请输入解决方式" + v-model="formData.resolveWay">
- - + + - - - -
- -
-
- -
-
- - - 查询 -
-
- -
- 经度 - - - 纬度 - - -
-
-
- - - - - + type="textarea" + maxlength="100" + show-word-limit + :rows="3" + placeholder="请输入备注" + v-model="formData.remark"> - -
- - -

-
+ style="display: block" + label="添加附件" + prop="attach"> + + + 点击上传 +
最多三个附件,只能上传word、excel、pdf文件
+
+
取 消 - 确 定 @@ -207,13 +114,9 @@ import { mapGetters } from 'vuex' import { Loading } from 'element-ui' // 引入Loading服务 import { requestPost } from '@/js/dai/request' -import Tinymce from '@c/tinymce/index.vue' -var map -var search -var markers -var infoWindowList -var geocoder // 新建一个正逆地址解析类 + + let loading // 加载动画 export default { @@ -223,97 +126,66 @@ export default { btnDisable: false, - keyWords: '', - activityId: '', + difficultyId: '', formData: { - serviceMatter: '',//服务事项 - serviceMatterList: [], - unitId: '',//单位ID - unitIdList: [], - title: '',//活动标题 - target: '',//活动目标 - content: '',//活动内容 - activityTime: '',//活动时间 - peopleCount: 0,//服务人数 - result: '', //活动结果 - address: '', //详细地址 - longitude: 36.0722275, //经度 - latitude: 120.38945519 //纬度 + content: '',//内容 + resolveWay: '',//解决方式 + remark: '',//备注 + scheduledTime: '',//预计处理时间yyyy-mm-dd hh:mm + remindTime: '',//提醒时间yyyy-mm-dd hh:mm + attachmentList: [] }, - serviceList: [] + + + fileList: [], + uploadUlr: window.SITE_CONFIG['apiURL'] + '/oss/file/uploadvariedfile', + dialogImageUrl: '', + dialogVisible: false } }, - components: { Tinymce }, + components: {}, mounted () { - this.initMap() + }, methods: { - async initForm (type, activityId) { + async initForm (type, difficultyId) { this.startLoading() this.$refs.ref_form.resetFields(); - //获取服务事项 - await this.loadService() - this.formType = type - if (activityId) { - this.activityId = activityId - this.formData.id = activityId + if (difficultyId) { + this.difficultyId = difficultyId + this.formData.id = difficultyId await this.loadFormData() - } else { - map.setCenter(new TMap.LatLng(36.0722275, 120.38945519)) - this.setMarker(36.0722275, 120.38945519) } this.endLoading() }, - //获取服务事项下拉框 - async loadService () { - const url = "/heart/serviceitem/dict-list" - - let params = { - type: 'usable' - // parentCategoryCode: '1010' - } - - const { data, code, msg } = await requestPost(url, params) - - if (code === 0) { - this.serviceList = data - - } else { - this.$message.error(msg) - } - - }, - - //加载组织 async loadFormData () { - const url = '/heart/icpartyactivity/detail' - // const url = 'http://yapi.elinkservice.cn/mock/245/heart/icpartyactivity/detail' + + // const url = 'http://yapi.elinkservice.cn/mock/245/gov/project/memoDifficulty/detail' + const url = '/gov/project/memoDifficulty/detail' let params = { - id: this.activityId + id: this.difficultyId, + readFlag: '0', } - const { data, code, msg } = await requestPost(url, params) - if (code === 0) { this.formData = data - console.log(this.formData.content) - let style_img = "style='width:50px;height:40px;' " - - if (this.formData.content) { - this.formData.content = this.formData.content.replace(/ { + element.name = element.fileName + element.type = element.attachmentType + element.size = element.attachmentSize + }); + this.fileList = data.attachmentList } - console.log(this.formData.content) - map.setCenter(new TMap.LatLng(parseFloat(this.formData.latitude), parseFloat(this.formData.longitude))) - this.setMarker(this.formData.latitude, this.formData.longitude) + } else { this.$message.error(msg) } @@ -324,20 +196,38 @@ export default { setTimeout(() => { this.btnDisable = false }, 10000) - this.$refs['ref_form'].validate((valid, messageObj) => { + this.$refs['ref_form'].validate(async (valid, messageObj) => { if (!valid) { app.util.validateRule(messageObj) this.btnDisable = false } else { - this.addActivity() + + await this.addDifficulty() + this.$store.dispatch('setTipsList') + this.$store.dispatch('setTipsTime') } }) }, - async addActivity () { - let url = '/heart/icpartyactivity/save' - // let url = "http://yapi.elinkservice.cn/mock/245/heart/icpartyactivity/save" + async addDifficulty () { + + + + if (this.fileList.length > 0) { + this.formData.attachmentList = this.fileList + } + + let url = '' + if (this.formType === 'add') { + url = '/gov/project/memoDifficulty/save' + // url = "http://yapi.elinkservice.cn/mock/245/gov/project/memoDifficulty/save" + this.formData.id = '' + + } else { + url = '/gov/project/memoDifficulty/update' + // url = "http://yapi.elinkservice.cn/mock/245/gov/project/memoDifficulty/update" + } const { data, code, msg } = await requestPost(url, this.formData) @@ -364,133 +254,69 @@ export default { }, - // 地图初始化函数,本例取名为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 // 设置地图旋转角度 - }) + beforeUpload (file) { + const array = file.name.split('.') + const extension = array[array.length - 1] + + if (extension !== 'xls' + && extension !== 'xlsx' + && extension !== 'doc' + && extension !== 'docx' + && extension !== 'pdf') { + this.$message.error('只能上传word、excel、pdf文件!') + return false + } - search = new window.TMap.service.Search({ pageSize: 10 }) - // 新建一个地点搜索类 - markers = new TMap.MultiMarker({ - map: map, - geometries: [] - }) - infoWindowList = Array(10) + }, - geocoder = new TMap.service.Geocoder(); // 新建一个正逆地址解析类 + handleFileRemove (file) { - // 监听地图平移结束 - map.on('panend', () => { - this.handleMoveCenter() - }) - this.handleMoveCenter() - this.convert() + if (file && file.status === "success") { + this.fileList.splice(this.fileList.findIndex(item => item.uid === file.uid), 1) + } }, - setMarker (lat, lng) { - markers.setGeometries([]) - markers.add([ - { - id: '4', - styleId: 'marker', - position: new TMap.LatLng(lat, lng), - properties: { - title: 'marker4' - } - } - ]) - }, + handleFileSuccess (res, file) { - handleSearchMap () { - infoWindowList.forEach((infoWindow) => { - infoWindow.close() - }) - infoWindowList.length = 0 - markers.setGeometries([]) - // 在地图显示范围内以给定的关键字搜索地点 - search - .searchRectangle({ - keyword: this.keyWords, - 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.formData.latitude = lat - this.formData.longitude = lng - this.convert() - } else { - this.$message.error('未检索到相关位置坐标') - } - }) - }, + if (res.code === 0 && res.msg === 'success') { + const array = file.name.split('.') + const fileType = array[array.length - 1] - handleMoveCenter () { - //修改地图中心点 - const center = map.getCenter() - const lat = center.getLat() - const lng = center.getLng() - this.formData.latitude = lat - this.formData.longitude = lng - this.setMarker(lat, lng) - this.convert(lat, lng) + file.fileName = file.name + file.attachmentUrl = res.data.url + file.attachmentSize = file.size + file.attachmentType = 'doc' + file.attachmentFormat = fileType + + this.fileList.push(file) + console.log(this.fileList) + } else this.$message.error(res.msg) }, - convert (lat, lng) { - markers.setGeometries([]); - // var input = document.getElementById('location').value.split(','); - let location - if (lat && lng) { - location = new TMap.LatLng(lat, lng); - } else { - location = new TMap.LatLng(this.formData.latitude, this.formData.longitude); - } - // map.setCenter(location); - markers.updateGeometries([ - { - id: 'main', // 点标注数据数组 - position: location, - }, - ]); - geocoder - .getAddress({ location: location }) // 将给定的坐标位置转换为地址 - .then((result) => { - this.formData.address = result.result.address - // 显示搜索到的地址 - }); + //下载 + handleFileDownload (file) { + + var a = document.createElement('a'); + var event = new MouseEvent('click'); + a.download = file.fileName; + console.log(a) + a.href = file.attachmentUrl; + a.dispatchEvent(event); + + }, resetData () { - this.activityId = '' - this.keyWords = '' + this.difficultyId = '' + this.formData = { - serviceMatter: '',//服务事项 - serviceMatterList: [], - unitId: '',//单位ID - unitIdList: [], - title: '',//活动标题 - target: '',//活动目标 - content: '',//活动内容 - activityTime: '',//活动时间 - peopleCount: 0,//服务人数 - result: '', //活动结果 - address: '', //详细地址 - longitude: 36.0722275, //经度 - latitude: 120.38945519 //纬度 + content: '',//内容 + resolveWay: '',//解决方式 + remark: '',//备注 + scheduledTime: '',//预计处理时间yyyy-mm-dd hh:mm + remindTime: '',//提醒时间yyyy-mm-dd hh:mm + attachmentList: [] + } }, // 开启加载动画 @@ -512,44 +338,20 @@ export default { computed: { dataRule () { return { - serviceMatterList: [ - { required: true, message: '服务事项不能为空', trigger: 'blur' } - ], - unitIdList: [ - { required: true, message: '单位名称不能为空', trigger: 'blur' }, - ], - title: [ - { required: true, message: '活动标题不能为空', trigger: 'blur' } - ], - - target: [ - { required: true, message: '活动目标不能为空', trigger: 'blur' } + resiName: [ + { required: true, message: '关怀人员不能为空', trigger: 'blur' } ], content: [ - { required: true, message: '活动内容不能为空', trigger: 'blur' } - ], - activityTime: [ - { required: true, message: '活动时间不能为空', trigger: 'blur' } + { required: true, message: '关怀事项不能为空', trigger: 'blur' }, ], - result: [ - { required: true, message: '活动结果不能为空', trigger: 'blur' } - ], - address: [ - { required: true, message: '详细地址不能为空', trigger: 'blur' } - ], - longitude: [ - { required: true, message: '坐标不能为空', trigger: 'blur' } - ] + } }, }, props: { - unitList: { - type: Array, - default: [] - }, + // serviceList: { // type: Array, @@ -566,31 +368,11 @@ export default { diff --git a/src/views/modules/secretaryLog/humanisticCare/careDetail.vue b/src/views/modules/secretaryLog/humanisticCare/careDetail.vue index 8e979669..48404018 100644 --- a/src/views/modules/secretaryLog/humanisticCare/careDetail.vue +++ b/src/views/modules/secretaryLog/humanisticCare/careDetail.vue @@ -1,99 +1,64 @@ + - diff --git a/src/views/modules/secretaryLog/humanisticCare/careForm.vue b/src/views/modules/secretaryLog/humanisticCare/careForm.vue index 745b01b0..2dc54f2a 100644 --- a/src/views/modules/secretaryLog/humanisticCare/careForm.vue +++ b/src/views/modules/secretaryLog/humanisticCare/careForm.vue @@ -6,50 +6,50 @@ :inline="true" :model="formData" :rules="dataRule" - :disabled="formType === 'detail'" + :disabled="formType==='look'" class="form"> + v-model="formData.concernType"> + v-model="formData.resiName"> + v-model="formData.phone"> + v-model="formData.address"> + v-model="formData.content"> - - @@ -86,10 +88,10 @@ + prop="status"> 点击上传
只能上传word、excel、pdf文件
+ class="el-upload__tip">最多三个附件,只能上传word、excel、pdf文件
@@ -130,8 +133,7 @@
取 消 - 确 定 @@ -154,44 +156,33 @@ export default { formType: 'add', //表单操作类型 add新增,edit编辑,detail详情 stateList: [ { - value: '1', + value: 1, label: '已完成' }, { - value: '2', + value: 0, label: '未完成' }, ], btnDisable: false, - activityId: '', + careId: '', formData: { - serviceMatter: '',//服务事项 - serviceMatterList: [], - unitId: '',//单位ID - unitIdList: [], - title: '',//活动标题 - target: '',//活动目标 - content: '',//活动内容 - activityTime: '',//活动时间 - peopleCount: 0,//服务人数 - result: '', //活动结果 + content: '',//关怀事项 + concernType: '',//关怀类型 + resiName: '',//关怀人员 + status: '',//状态 0未完成 1已完成 + phone: '',//电话 + address: '',//地址 + scheduledTime: '',//预计关怀时间yyyy-mm-dd hh:mm + remindTime: '',//提醒时间yyyy-mm-dd hh:mm + attachmentList: [] + }, - }, - serviceList: [], - - fileList: [ - // { - // name: 'food.jpeg', - // url: 'https://fuss10.elemecdn.com/3/63/4e7f3a15429bfda99bce42a18cdd1jpeg.jpeg?imageMogr2/thumbnail/360x360/format/webp/quality/100' - // }, { - // name: 'food2.jpeg', - // url: 'https://fuss10.elemecdn.com/3/63/4e7f3a15429bfda99bce42a18cdd1jpeg.jpeg?imageMogr2/thumbnail/360x360/format/webp/quality/100' - // } - ], - uploadUlr: window.SITE_CONFIG['apiURL'] + '/oss/file/upload-guide-file', + fileList: [], + uploadUlr: window.SITE_CONFIG['apiURL'] + '/oss/file/uploadvariedfile', dialogImageUrl: '', dialogVisible: false @@ -204,47 +195,92 @@ export default { methods: { - - async initForm (type, activityId) { + async initForm (type, careId) { this.startLoading() - this.$refs.ref_form.resetFields(); - - //获取服务事项 - await this.loadService() + this.$refs['ref_form'].resetFields(); this.formType = type - if (activityId) { - this.activityId = activityId - this.formData.id = activityId + if (careId) { + this.careId = careId + this.formData.id = careId await this.loadFormData() - } else { - } this.endLoading() }, + async loadFormData () { + // const url = 'http://yapi.elinkservice.cn/mock/245/gov/project/memoConcern' + const url = '/gov/project/memoConcern' + let params = { + id: this.careId, + readFlag: '0', + } + const { data, code, msg } = await requestPost(url, params) + if (code === 0) { + this.formData = data + + if (data.attachmentList) { + data.attachmentList.forEach(element => { + element.name = element.fileName + element.type = element.attachmentType + element.size = element.attachmentSize + }); + this.fileList = data.attachmentList + + } + + } else { + this.$message.error(msg) + } + }, async handleComfirm () { this.btnDisable = true setTimeout(() => { this.btnDisable = false }, 10000) - this.$refs['ref_form'].validate((valid, messageObj) => { + this.$refs['ref_form'].validate(async (valid, messageObj) => { if (!valid) { app.util.validateRule(messageObj) this.btnDisable = false } else { - this.addActivity() + + await this.addCare() + this.$store.dispatch('setTipsList') + this.$store.dispatch('setTipsTime') } }) }, - async addActivity () { - let url = '/heart/icpartyactivity/save' - // let url = "http://yapi.elinkservice.cn/mock/245/heart/icpartyactivity/save" + async addCare () { + + const regPhone = /^1(3|4|5|6|7|8|9)\d{9}$/; //手机号码 + // if (regPhone.test(this.formData.mobile) === false) { + // this.btnDisable = false + // this.$message({ + // type: 'warning', + // message: '请输入正确的手机号码' + // }) + // return false; + // } + + if (this.fileList.length > 0) { + this.formData.attachmentList = this.fileList + } + + let url = '' + if (this.formType === 'add') { + url = '/gov/project/memoConcern/save' + // url = "http://yapi.elinkservice.cn/mock/245/gov/project/memoConcern/save" + this.formData.id = '' + + } else { + url = '/gov/project/memoConcern/update' + // url = "http://yapi.elinkservice.cn/mock/245/gov/project/memoConcern/update" + } const { data, code, msg } = await requestPost(url, this.formData) @@ -284,14 +320,6 @@ export default { return false } - - - // if (!isLt2M) { - // this.$message.warning('上传模板大小不能超过 5MB!') - // return - // } - - // return false // 返回false不会自动上传 }, handleFileRemove (file) { @@ -307,8 +335,12 @@ export default { const array = file.name.split('.') const fileType = array[array.length - 1] - file.url = res.data.url - file.type = fileType + file.fileName = file.name + file.attachmentUrl = res.data.url + file.attachmentSize = file.size + file.attachmentType = 'doc' + file.attachmentFormat = fileType + this.fileList.push(file) console.log(this.fileList) } else this.$message.error(res.msg) @@ -319,28 +351,27 @@ export default { var a = document.createElement('a'); var event = new MouseEvent('click'); - a.download = file.name; + a.download = file.fileName; console.log(a) - a.href = file.url; + a.href = file.attachmentUrl; a.dispatchEvent(event); }, resetData () { - this.activityId = '' + this.careId = '' this.formData = { - serviceMatter: '',//服务事项 - serviceMatterList: [], - unitId: '',//单位ID - unitIdList: [], - title: '',//活动标题 - target: '',//活动目标 - content: '',//活动内容 - activityTime: '',//活动时间 - peopleCount: 0,//服务人数 - result: '', //活动结果 + content: '',//关怀事项 + concernType: '',//关怀类型 + resiName: '',//关怀人员 + status: '',//状态 0未完成 1已完成 + phone: '',//电话 + address: '',//地址 + scheduledTime: '',//预计关怀时间yyyy-mm-dd hh:mm + remindTime: '',//提醒时间yyyy-mm-dd hh:mm + attachmentList: [] } }, @@ -363,42 +394,38 @@ export default { computed: { dataRule () { return { - serviceMatterList: [ - { required: true, message: '服务事项不能为空', trigger: 'blur' } + resiName: [ + { required: true, message: '关怀人员不能为空', trigger: 'blur' } ], - unitIdList: [ - { required: true, message: '单位名称不能为空', trigger: 'blur' }, + content: [ + { required: true, message: '关怀事项不能为空', trigger: 'blur' }, ], - title: [ - { required: true, message: '活动标题不能为空', trigger: 'blur' } + concernType: [ + { required: false }, ], - - target: [ - { required: true, message: '活动目标不能为空', trigger: 'blur' } + status: [ + { required: false }, ], - content: [ - { required: true, message: '活动内容不能为空', trigger: 'blur' } + phone: [ + { required: false }, + ], + address: [ + { required: false }, ], - activityTime: [ - { required: true, message: '活动时间不能为空', trigger: 'blur' } + scheduledTime: [ + { required: false }, ], - result: [ - { required: true, message: '活动结果不能为空', trigger: 'blur' } + remindTime: [ + { required: false }, ], - longitude: [ - { required: true, message: '坐标不能为空', trigger: 'blur' } - ] } }, }, props: { - unitList: { - type: Array, - default: [] - }, + // serviceList: { // type: Array, diff --git a/src/views/modules/secretaryLog/humanisticCare/careList.vue b/src/views/modules/secretaryLog/humanisticCare/careList.vue index 5d58f0e7..a712923c 100644 --- a/src/views/modules/secretaryLog/humanisticCare/careList.vue +++ b/src/views/modules/secretaryLog/humanisticCare/careList.vue @@ -7,8 +7,8 @@ :label-width="'100px'">
- + - + - + + prop="status"> - @@ -57,12 +57,12 @@
- + @@ -74,7 +74,7 @@ - - - - - - - - + - 查看 修改 导出 + @click="handleExport(scope.row)">导出 删除 @@ -223,7 +227,6 @@ class="dialog-h" @closed="diaClose"> @@ -231,13 +234,12 @@ + @closed="diaClose"> @@ -262,53 +264,38 @@ export default { pageSize: 10, pageNo: 0, tableLoading: false, - agencyId: '', - unitList: [],//单位list - serviceList: [ - { - id: "1", - name: '积极配合社区安全巡查员进行场所消防、安全等方面的检查。' - }, - { - id: "2", - name: '积极配合' - }, + + stateList: [ { - id: "3", - name: '积极配合社区安全巡查员进行' + value: 1, + label: '已完成' }, { - id: "4", - name: '积极配合社区安全巡查员进行场所消防、安全等方面的检查。并具备安全意识及设备设施' + value: 0, + label: '未完成' }, - ],//服务list - pickerOptions: { //控制时间范围 - disabledDate (time) { - return time.getTime() > (Date.now() - (24 * 60 * 60 * 1000)) - } - }, + ], + scheduledTimeRange: [], timeRange: [], - unitId: '', formData: { - unitId: '', - title: '', - serviceMatter: '', - startTime: '', - endTime: '' + content: '',//关怀事项 + concernType: '',//关怀类型 + resiName: '',//关怀人员 + status: '',//状态 0未完成 1已完成 + startTime: '',//开始时间 yyyy-mm-dd + endTime: '',//结束时间 yyyy-mm-dd + scheduledStartTime: '',//预计关怀开始时间 yyyy-mm-dd + scheduledEndTime: '',//预计关怀结束时间 yyyy-mm-dd }, tableData: [], //form相关 formShow: false, - formTitle: '新增活动', + formTitle: '新增', detailShow: false, - files: "", - fileName: "", - uploadUlr: window.SITE_CONFIG['apiURL'] + '/gov/org/neighborhood/import' - } }, components: { @@ -318,14 +305,7 @@ export default { }, async mounted () { - //获取服务事项 - await this.loadService() - const { user } = this.$store.state - this.agencyId = user.agencyId - - //获取建联单位 - await this.loadUnit() //获取网格下拉框数据 await this.loadTable() }, @@ -335,52 +315,12 @@ export default { this.loadTable() }, - async loadUnit () { - const url = "/heart/icpartyunit/option" - // const url = "http://yapi.elinkservice.cn/mock/245/heart/icpartyunit/option" - - let params = { - agencyId: this.agencyId - } - - const { data, code, msg } = await requestPost(url, params) - - if (code === 0) { - this.unitList = data - - } else { - this.$message.error(msg) - } - - }, - - //获取服务事项下拉框 - async loadService () { - const url = "/heart/serviceitem/dict-list" - - - let params = { - // parentCategoryCode: '1010' - } - - const { data, code, msg } = await requestPost(url, params) - - if (code === 0) { - this.serviceList = data - - } else { - this.$message.error(msg) - } - - }, - async loadTable () { this.tableLoading = true - const url = "/heart/icpartyactivity/search" - // const url = "http://yapi.elinkservice.cn/mock/245/heart/icpartyactivity/list" + const url = "/gov/project/memoConcern/page" + // const url = "http://yapi.elinkservice.cn/mock/245/gov/project/memoConcern/page" let params = { - agencyId: this.agencyId, pageSize: this.pageSize, pageNo: this.pageNo, ...this.formData @@ -400,21 +340,25 @@ export default { diaClose () { - this.$refs.ref_form.resetData() - this.formShow = false - }, + if (this.formShow) { + // this.$refs.ref_form.resetData() + this.formShow = false + } else { + this.detailShow = false + } + - detailClosed () { - this.detailShow = false }, + handleDetail (row) { // this.detailShow = true - this.formTitle = '详情' this.formShow = true + this.formTitle = '详情' this.$nextTick(() => { // this.$refs.ref_detail.initForm(row) - this.$refs.ref_form.initForm('detail', row.id) + this.$refs.ref_form.initForm('look', row.id) + }) }, @@ -451,7 +395,7 @@ export default { type: "warning" }) .then(() => { - this.deleteActivity(row) + this.deleteCare(row) }) .catch(err => { if (err == "cancel") { @@ -461,15 +405,15 @@ export default { }); }, - async deleteActivity (row) { - const url = "/heart/icpartyactivity/delete" - // const url = "http://yapi.elinkservice.cn/mock/245/heart/icpartyactivity/delete" - + async deleteCare (row) { + const url = "/gov/project/memoConcern/delete" + // const url = "http://yapi.elinkservice.cn/mock/245/gov/project/memoConcern/delete" + let ids = [row.id] let params = { - id: row.id + ids: ids } - const { data, code, msg } = await requestPost(url, params) + const { data, code, msg } = await requestPost(url, ids) if (code === 0) { this.$message({ @@ -485,14 +429,17 @@ export default { //重置搜索条件 resetSearch () { + this.scheduledTimeRange = [] this.timeRange = [] this.formData = { - gridId: '', - unitName: '', - serviceMatter: '', - type: '', - contact: '', - contactMobile: '' + content: '',//关怀事项 + concernType: '',//关怀类型 + resiName: '',//关怀人员 + status: '',//状态 0未完成 1已完成 + startTime: '',//开始时间 yyyy-mm-dd + endTime: '',//结束时间 yyyy-mm-dd + scheduledStartTime: '',//预计关怀开始时间 yyyy-mm-dd + scheduledEndTime: '',//预计关怀结束时间 yyyy-mm-dd } this.pageSize = 10 this.pageNo = 0 @@ -500,23 +447,18 @@ export default { }, //导出表格 - async handleExport () { - let title = '联建活动列表' + async handleExport (row) { + let title = '人员关怀' - const url = "/heart/icpartyactivity/export" - let params = { - agencyId: this.agencyId, - - ...this.formData - - } + let url = `/gov/project/memoConcern/${row.id}/exportWord` + let params = {} app.ajax.exportFilePost( url, params, (data, rspMsg) => { - this.download(data, title + '.xls') + this.download(data, title + '.doc') }, (rspMsg, data) => { this.$message.error(rspMsg); @@ -551,72 +493,27 @@ export default { }, - // 上传文件之前的钩子 - beforeUpload (file) { - this.files = file; - - const isText = file.type === 'application/vnd.ms-excel' - const isTextComputer = file.type === 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' + handleScheduledTimeChange (time) { + if (time) { + this.formData.scheduledStartTime = time[0] + this.formData.scheduledEndTime = time[1] - if (!isText && !isTextComputer) { - this.$message.error('请选择正确格式的文件') - return false } else { - this.fileName = file.name; - return true - } + this.formData.scheduledStartTime = '' + this.formData.scheduledEndTime = '' - }, - // 上传文件个数超过定义的数量 - handleExceed (files, fileList) { - this.$message.warning(`当前限制选择 1 个文件,请删除后继续上传`) - }, - - async uploadFile () { - this.loading = true - - if (this.fileName == "") { - this.$message.warning('请选择要上传的文件!') - return false - } - - //清空上传列表 - this.$refs['upload'].clearFiles() - - var url = '/heart/icpartyactivity/import' - let fileFormData = new FormData(); - fileFormData.append('file', this.files);//filename是键,file是值,就是要传的文件,test.zip是要传的文件名 - - const { data, code, msg } = await requestPost(url, fileFormData) - if (code === 0) { - this.$message({ - type: "success", - message: "导入成功" - }); - - this.loadTable() - } else { - this.$message.error(msg) } - }, - handleTimeChange (time) { if (time) { - const startTimeArray = util.dateFormatter(time[0], 'date').split('-') - const endTimeArray = util.dateFormatter(time[1], 'date').split('-') - - this.formData.startTime = startTimeArray[0] + '-' + startTimeArray[1] + '-' + startTimeArray[2] + ' 00:00:00' - this.formData.endTime = endTimeArray[0] + '-' + endTimeArray[1] + '-' + endTimeArray[2] + ' 23:59:59' + this.formData.startTime = time[0] + this.formData.endTime = time[1] - // this.startTimeShow = startTimeArray[0] + '年' + startTimeArray[1] + '月' + startTimeArray[2] + '日' - // this.endTimeShow = endTimeArray[0] + '年' + endTimeArray[1] + '月' + endTimeArray[2] + '日' } else { this.formData.startTime = '' this.formData.endTime = '' - // this.startTimeShow = '' - // this.endTimeShow = '' + } }, @@ -653,9 +550,7 @@ export default { return (this.clientHeight - 430) }, - rowHeight () { - return (this.clientHeight - 200) + 'px' - }, + ...mapGetters(['clientHeight']) }, watch: { diff --git a/src/views/modules/secretaryLog/workLog/form.vue b/src/views/modules/secretaryLog/workLog/form.vue new file mode 100644 index 00000000..7d7961ae --- /dev/null +++ b/src/views/modules/secretaryLog/workLog/form.vue @@ -0,0 +1,358 @@ + + + + + + + + diff --git a/src/views/modules/secretaryLog/workLog/index.vue b/src/views/modules/secretaryLog/workLog/index.vue new file mode 100644 index 00000000..57e2f85b --- /dev/null +++ b/src/views/modules/secretaryLog/workLog/index.vue @@ -0,0 +1,474 @@ + + + + diff --git a/src/views/tips.vue b/src/views/tips.vue index 7e1092b3..5b350bd5 100644 --- a/src/views/tips.vue +++ b/src/views/tips.vue @@ -1,11 +1,11 @@