已修改21个文件
已删除3个文件
已添加12个文件
已重命名2个文件
| | |
| | | <el-aside class="el-aside" |
| | | ><SiderMenu |
| | | :collapse="isCollapsed" |
| | | @collapsed-sider="collapsedSider" |
| | | @nav-page="navPage" |
| | | ></SiderMenu |
| | | ></el-aside> |
¶Ô±ÈÐÂÎļþ |
| | |
| | | import { $fysp } from '../index'; |
| | | |
| | | const id = 'IF3DgsgKxSWvTM3M'; |
| | | const name = 'pcheck'; |
| | | |
| | | export default { |
| | | /** |
| | | * è·ååä»»å¡ç»è®¡ä¿¡æ¯ |
| | | * @param {Number} action 0ï¼é®é¢éè¿ï¼1ï¼é®é¢ä¸éè¿ï¼2ï¼æ´æ¹éè¿ï¼3æ´æ¹ä¸éè¿ |
| | | */ |
| | | checkProblem({ pId, action, remark = '', userId = id, userName = name }) { |
| | | return $fysp |
| | | .post('problemlist/check', { |
| | | pId: pId, |
| | | action: action, |
| | | remark: remark, |
| | | userId: userId, |
| | | userName: userName, |
| | | }) |
| | | .then((res) => res.data); |
| | | }, |
| | | }; |
ÎļþÃû´Ó src/api/sceneApi.js ÐÞ¸Ä |
| | |
| | | import { $fysp } from './index'; |
| | | import { $fysp } from '../index'; |
| | | |
| | | export default { |
| | | /** |
| | |
| | | */ |
| | | searchScene(area, page = 1, perPage = 20) { |
| | | const params = `page=${page}&per_page=${perPage}`; |
| | | return $fysp.post(`scense/find?${params}`, area); |
| | | return $fysp.post(`scense/find?${params}`, area).then((res) => res.data); |
| | | }, |
| | | |
| | | /** |
| | |
| | | * @returns åºæ¯è¯¦æ
|
| | | */ |
| | | getSceneDetail(sId) { |
| | | return $fysp.get(`scense/detail`, { |
| | | params: { |
| | | sceneId: sId, |
| | | }, |
| | | }); |
| | | return $fysp |
| | | .get(`scense/detail`, { |
| | | params: { |
| | | sceneId: sId, |
| | | }, |
| | | }) |
| | | .then((res) => res.data); |
| | | }, |
| | | |
| | | /** |
| | |
| | | subScene: subScene ? JSON.stringify(subScene) : null, |
| | | sceneDevice: sceneDevice ? sceneDevice : null, |
| | | }; |
| | | return $fysp.post(`scense/detail/update?${params}`, rb); |
| | | return $fysp |
| | | .post(`scense/detail/update?${params}`, rb) |
| | | .then((res) => res.data); |
| | | }, |
| | | |
| | | /** |
| | | * æ´æ°åºæ¯é¢å¤ä¿¡æ¯ |
| | | */ |
| | | updateSubScene(typeId, subScene) { |
| | | return this.updateSceneDetail(typeId, { subScene: subScene }); |
| | | return this.updateSceneDetail(typeId, { subScene: subScene }).then( |
| | | (res) => res.data |
| | | ); |
| | | }, |
| | | |
| | | /** |
| | | * æ´æ°åºæ¯è®¾å¤ä¿¡æ¯ |
| | | */ |
| | | updateSceneDevice(typeId, sceneDevice) { |
| | | return this.updateSceneDetail(typeId, { sceneDevice: sceneDevice }); |
| | | return this.updateSceneDetail(typeId, { sceneDevice: sceneDevice }).then( |
| | | (res) => res.data |
| | | ); |
| | | }, |
| | | |
| | | /** |
| | |
| | | * @param {Object} scene |
| | | */ |
| | | createScene(scene) { |
| | | return $fysp.put('scense', scene); |
| | | return $fysp.put('scense', scene).then((res) => res.data); |
| | | }, |
| | | |
| | | /** |
| | |
| | | * @param {Object} scene |
| | | */ |
| | | updateScene(scene) { |
| | | return $fysp.post('scense', scene); |
| | | return $fysp.post('scense', scene).then((res) => res.data); |
| | | }, |
| | | }; |
¶Ô±ÈÐÂÎļþ |
| | |
| | | import { $fysp } from '../index'; |
| | | |
| | | export default { |
| | | /** |
| | | * è·åé¡¶å±ä»»å¡ |
| | | */ |
| | | getTopTask() { |
| | | return $fysp.get('task/alltask/0').then((res) => res.data); |
| | | }, |
| | | |
| | | /** |
| | | * è·ååä»»å¡ç»è®¡ä¿¡æ¯ |
| | | */ |
| | | getSubtaskSummary({ topTaskId = undefined, sceneTypeId = undefined }) { |
| | | return $fysp |
| | | .get('subtask/summary', { |
| | | params: { |
| | | topTaskId: topTaskId, |
| | | sceneTypeId: sceneTypeId, |
| | | }, |
| | | }) |
| | | .then((res) => res.data); |
| | | }, |
| | | |
| | | /** |
| | | * è·ååä»»å¡é®é¢è¯¦æ
|
| | | */ |
| | | getProBySubtask(id) { |
| | | return $fysp |
| | | .get('problemlist/subtask', { |
| | | params: { |
| | | stGuid: id, |
| | | }, |
| | | }) |
| | | .then((res) => res.data); |
| | | }, |
| | | }; |
¶Ô±ÈÐÂÎļþ |
| | |
| | | import { $fysp } from '../index'; |
| | | |
| | | export default { |
| | | /** |
| | | * è·åç¨æ·è¯¦æ
|
| | | */ |
| | | getUserById(id) { |
| | | return $fysp.get(`userinfo/${id}`).then((res) => res.data); |
| | | }, |
| | | |
| | | /** |
| | | * æ´æ°ç¨æ·è¯¦æ
|
| | | */ |
| | | updateUser(user) { |
| | | return $fysp.post(`userinfo`, user).then((res) => res.data); |
| | | }, |
| | | |
| | | /** |
| | | * è·ååºæ¯çç¨æ·è¯¦æ
|
| | | */ |
| | | getUserByScene(sId) { |
| | | return $fysp |
| | | .get(`userinfo/scene/get?sceneId=${sId}`) |
| | | .then((res) => res.data); |
| | | }, |
| | | |
| | | /** |
| | | * èªå¨åå»ºè´¦æ· |
| | | */ |
| | | autoCreateAccount(sId) { |
| | | return $fysp.post(`userinfo/create?sceneId=${sId}`).then((res) => res.data); |
| | | }, |
| | | }; |
ÎļþÃû´Ó src/api/noticeApi.js ÐÞ¸Ä |
| | |
| | | import { $fytz } from './index'; |
| | | import { $fytz } from '../index'; |
| | | |
| | | const id = 'IF3DgsgKxSWvTM3M'; |
| | | const id = 'BbEfZ4izeR4TEZ2N'; |
| | | const name = 'pcheck'; |
| | | |
| | | export default { |
| | |
| | | */ |
| | | getNoticeHistory({ type, subtype = null, page = 1, perPage = 20 }) { |
| | | const params = `userId=${id}&page=${page}&per_page=${perPage}`; |
| | | return $fytz.post(`notifications/history?${params}`, { |
| | | ecNoticetype: type, |
| | | ecNoticesubtype: subtype, |
| | | }); |
| | | return $fytz |
| | | .post(`notifications/history?${params}`, { |
| | | ecNoticetype: type, |
| | | ecNoticesubtype: subtype, |
| | | }) |
| | | .then((res) => res.data); |
| | | }, |
| | | |
| | | /** |
| | | * è·åç¨æ·æªè¯»éç¥ |
| | | */ |
| | | getNotification() { |
| | | return $fytz.get('notifications', { |
| | | params: { |
| | | userId: id, |
| | | page: 1, |
| | | per_page: 30, |
| | | }, |
| | | }); |
| | | return $fytz |
| | | .get('notifications', { |
| | | params: { |
| | | userId: id, |
| | | page: 1, |
| | | per_page: 30, |
| | | }, |
| | | }) |
| | | .then((res) => res.data); |
| | | }, |
| | | |
| | | /** |
| | |
| | | } |
| | | */ |
| | | releaseNotice(notice) { |
| | | notice.authorId = id |
| | | notice.authorName = name |
| | | return $fytz.post(`notifications/${id}/release2`, notice); |
| | | notice.authorId = id; |
| | | notice.authorName = name; |
| | | return $fytz |
| | | .post(`notifications/${id}/release2`, notice) |
| | | .then((res) => res.data); |
| | | }, |
| | | }; |
¶Ô±ÈÐÂÎļþ |
| | |
| | | import { $fytz } from '../index'; |
| | | |
| | | export default { |
| | | /** |
| | | * æç´¢ç¨æ· |
| | | * @param {String} userId |
| | | * @param {Number} page |
| | | * @param {Number} per_page |
| | | * @param {Object} data |
| | | * @returns |
| | | */ |
| | | fetchUser(userId, page = 1, per_page = 20, data) { |
| | | const params = `page=${page}&per_page=${per_page}`; |
| | | return $fytz.post(`userInfo/searchUser/${userId}?${params}`, data); |
| | | }, |
| | | |
| | | /** |
| | | * è·åç¨æ·åºæ¬ä¿¡æ¯ |
| | | * @param {String} userId |
| | | * @returns |
| | | */ |
| | | fetchUserBaseInfo(userId) { |
| | | return $fytz |
| | | .get(`userInfo/baseInfo?userId=${userId}`) |
| | | .then((res) => res.data); |
| | | }, |
| | | |
| | | /** |
| | | * æ´æ°ç¨æ·è´¦æ·ä¿¡æ¯ |
| | | * @param {*} data |
| | | * @returns |
| | | */ |
| | | updateUserInfo(data) { |
| | | return $fytz.post('userInfo', data).then((res) => res.data); |
| | | }, |
| | | |
| | | /** |
| | | * æ°å¢ç¨æ· |
| | | * @param {*} data |
| | | * @returns |
| | | */ |
| | | createUser(data) { |
| | | return $fytz.put('userInfo', data).then((res) => res.data); |
| | | } |
| | | }; |
| | |
| | | const ip1 = 'http://47.100.191.150:9005/'; |
| | | // const ip1 = 'http://192.168.1.12:8080/'; |
| | | // const ip2 = 'http://47.100.191.150:9006/'; |
| | | // const ip2 = 'http://192.168.1.14:8080/'; |
| | | const ip2 = 'https://fyami.com.cn/' |
| | | // const ip2 = 'http://192.168.1.6:8080/'; |
| | | const ip2 = 'https://fyami.com.cn/'; |
| | | |
| | | //é£ç¾½ç管 |
| | | const $fysp = axios.create({ |
| | |
| | | // å¨åé请æ±ä¹ååäºä»ä¹ |
| | | console.log('==>请æ±å¼å§'); |
| | | console.log(`${config.baseURL}${config.url}`); |
| | | if (config.data) { |
| | | console.log('==>è¯·æ±æ°æ®', config.data); |
| | | } |
| | | return config; |
| | | }, |
| | | function (error) { |
| | |
| | | console.log(response); |
| | | console.log('==>请æ±ç»æ'); |
| | | if (response.status == 200) { |
| | | return response.data |
| | | if (response.data.success != undefined && response.data.success != null) { |
| | | if (response.data.success == true) { |
| | | return response; |
| | | } else { |
| | | return Promise.reject(response.data.message); |
| | | } |
| | | } else { |
| | | return response; |
| | | } |
| | | } else { |
| | | return Promise.reject(response); |
| | | } |
| | |
| | | ElScrollbar: typeof import('element-plus/es')['ElScrollbar'] |
| | | ElSelect: typeof import('element-plus/es')['ElSelect'] |
| | | ElSpace: typeof import('element-plus/es')['ElSpace'] |
| | | ElStep: typeof import('element-plus/es')['ElStep'] |
| | | ElSteps: typeof import('element-plus/es')['ElSteps'] |
| | | ElSubMenu: typeof import('element-plus/es')['ElSubMenu'] |
| | | ElSwitch: typeof import('element-plus/es')['ElSwitch'] |
| | | ElTable: typeof import('element-plus/es')['ElTable'] |
| | | ElTableColumn: typeof import('element-plus/es')['ElTableColumn'] |
| | | ElTabPane: typeof import('element-plus/es')['ElTabPane'] |
| | | ElTabs: typeof import('element-plus/es')['ElTabs'] |
| | | ElTag: typeof import('element-plus/es')['ElTag'] |
| | | ElTooltip: typeof import('element-plus/es')['ElTooltip'] |
| | | ElTransfer: typeof import('element-plus/es')['ElTransfer'] |
| | | ElTree: typeof import('element-plus/es')['ElTree'] |
| | | Footer: typeof import('./components/core/Footer.vue')['default'] |
| | | FormCol: typeof import('./components/layout/FormCol.vue')['default'] |
| | | Header: typeof import('./components/core/Header.vue')['default'] |
| | | MenuItems: typeof import('./components/core/MenuItems.vue')['default'] |
| | | ProblemCard: typeof import('./components/ProblemCard.vue')['default'] |
| | | RouterLink: typeof import('vue-router')['RouterLink'] |
| | | RouterView: typeof import('vue-router')['RouterView'] |
| | |
| | | <template> |
| | | <el-card class="layout" shadow="hover"> |
| | | <!-- <el-steps :active="active" finish-status="success" style=""> |
| | | <el-step title="Step 1" style=""/> |
| | | <el-step title="Step 2" /> |
| | | <el-step title="Step 3" /> |
| | | </el-steps> --> |
| | | <el-descriptions :column="3" size="small" > |
| | | <el-steps :active="active" finish-status="success" style="" simple> |
| | | <el-step v-for="(s, i) in getSteps" :key="i" :title="s" /> |
| | | </el-steps> |
| | | |
| | | <el-descriptions :column="3" size="small"> |
| | | <template #title> |
| | | <span class="d-index">{{ index + 1 }}</span> |
| | | <span class="d-title">{{ title }}</span> |
| | | </template> |
| | | <template #extra> |
| | | <!-- <span class="d-extra">{{ status }}</span> --> |
| | | <el-tag style="font-size: 16px;line-height: 16px;padding: 14px;" :type="status.type" effect="plain" size="large" round>{{ |
| | | status.name |
| | | }}</el-tag> |
| | | <el-tag |
| | | style="font-size: 16px; line-height: 16px; padding: 14px" |
| | | :type="status.type" |
| | | effect="plain" |
| | | size="large" |
| | | round |
| | | >{{ status.name }}</el-tag |
| | | > |
| | | </template> |
| | | <el-descriptions-item |
| | | label-class-name="descriptions-label-1" |
| | |
| | | type: Object, |
| | | default: () => { |
| | | return { |
| | | name: "", |
| | | type: "", |
| | | name: '', |
| | | type: '', |
| | | }; |
| | | }, |
| | | }, |
| | |
| | | type: Array, |
| | | default: () => [ |
| | | { |
| | | name: "", |
| | | value: "", |
| | | name: '', |
| | | value: '', |
| | | }, |
| | | ], |
| | | }, |
| | |
| | | type: Array, |
| | | default: () => [ |
| | | { |
| | | title: "", |
| | | title: '', |
| | | path: [], |
| | | }, |
| | | ], |
| | |
| | | type: Array, |
| | | default: () => [ |
| | | { |
| | | name: "primary", |
| | | color: "primary", |
| | | name: 'primary', |
| | | color: 'primary', |
| | | }, |
| | | ], |
| | | }, |
| | | // active: { |
| | | // type: Number, |
| | | // default: 3, |
| | | // }, |
| | | }, |
| | | emits: ['buttonClick'], |
| | | data() { |
| | | return { |
| | | active: 1 |
| | | } |
| | | active: 3, |
| | | steps: [ |
| | | { |
| | | bef: 'é®é¢å¾
å®¡æ ¸', |
| | | aft: 'é®é¢å·²å®¡æ ¸', |
| | | }, |
| | | { |
| | | bef: 'é®é¢å¾
æ´æ¹', |
| | | aft: 'é®é¢å·²æ´æ¹', |
| | | }, |
| | | { |
| | | bef: 'æ´æ¹å¾
å®¡æ ¸', |
| | | aft: 'æ´æ¹å·²å®¡æ ¸', |
| | | }, |
| | | ], |
| | | }; |
| | | }, |
| | | computed: { |
| | | getSteps() { |
| | | return this.steps.map((v, i) => { |
| | | if (i >= this.active) { |
| | | return v.bef; |
| | | } else { |
| | | return v.aft; |
| | | } |
| | | }); |
| | | }, |
| | | }, |
| | | methods: { |
| | | onButtonClick(i) { |
| | | this.$emit('buttonClick', this.index, i) |
| | | } |
| | | } |
| | | this.$emit('buttonClick', this.index, i); |
| | | }, |
| | | }, |
| | | }; |
| | | </script> |
| | | <style scoped> |
| | |
| | | </template> |
| | | |
| | | <script> |
| | | import taskApi from '@/api/taskApi'; |
| | | import taskApi from '@/api/fysp/taskApi'; |
| | | import { enumScene_2NA } from "@/enum/scene"; |
| | | |
| | | export default { |
| | |
| | | <template> |
| | | <router-view v-slot="{ Component, route }"> |
| | | <!-- <transition :name="route.meta.transition || 'fade'"> --> |
| | | <keep-alive> |
| | | <component v-if="route.meta.keepAlive" :is="Component" /> |
| | | </keep-alive> |
| | | <component v-if="!route.meta.keepAlive" :is="Component" /> |
| | | <keep-alive> |
| | | <component |
| | | v-if="route.meta.keepAlive" |
| | | :is="Component" |
| | | :key="route.name" |
| | | /> |
| | | </keep-alive> |
| | | <component v-if="!route.meta.keepAlive" :is="Component" :key="route.name" /> |
| | | <!-- </transition> --> |
| | | </router-view> |
| | | </template> |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <template> |
| | | <template v-for="(item, i) in routes" :key="`${i}`"> |
| | | <el-sub-menu v-if="item.children" :index="`${i}`"> |
| | | <template #title> |
| | | <el-icon> |
| | | <component :is="item.icon"></component> |
| | | </el-icon> |
| | | <span>{{ item.name }}</span> |
| | | </template> |
| | | |
| | | <template v-for="(child, i2) in item.children" :key="`${i}-${i2}`"> |
| | | <el-menu-item-group v-if="child.group" :title="child.name"> |
| | | <el-menu-item |
| | | v-for="(child2, i3) in child.children" |
| | | :key="`${i}-${i2}-${i3}`" |
| | | :index="child2.path" |
| | | @click="navPage(item, child, child2)" |
| | | > |
| | | <el-icon v-if="child2.icon"> |
| | | <component :is="child2.icon"></component> |
| | | </el-icon> |
| | | <template #title>{{ child2.name }}</template> |
| | | </el-menu-item> |
| | | </el-menu-item-group> |
| | | <el-menu-item v-else :index="child.path" @click="navPage(item, child)"> |
| | | <el-icon v-if="child.icon"> |
| | | <component :is="child.icon"></component> |
| | | </el-icon> |
| | | <template #title>{{ child.name }}</template> |
| | | </el-menu-item> |
| | | </template> |
| | | </el-sub-menu> |
| | | |
| | | <el-menu-item v-else :index="item.path" @click="navPage(item)"> |
| | | <el-icon> |
| | | <component :is="item.icon"></component> |
| | | </el-icon> |
| | | <template #title>{{ item.name }}</template> |
| | | </el-menu-item> |
| | | </template> |
| | | </template> |
| | | |
| | | <script> |
| | | export default { |
| | | name: 'CoreMenuItem', |
| | | props: { |
| | | routes: { |
| | | type: Array, |
| | | }, |
| | | }, |
| | | emits: ['navPage'], |
| | | methods: { |
| | | navPage(...item) { |
| | | // const titles = item.map((value) => { |
| | | // return value.name; |
| | | // }); |
| | | this.$emit('navPage', ...item); |
| | | }, |
| | | }, |
| | | }; |
| | | </script> |
| | |
| | | </el-space> |
| | | </el-row> |
| | | <el-scrollbar :height="menuHeight" v-if="!collapse"> |
| | | <template v-for="(item, i) in routes" :key="`${i}`"> |
| | | <el-sub-menu v-if="item.children" :index="`${i}`"> |
| | | <template #title> |
| | | <el-icon> |
| | | <component :is="item.icon"></component> |
| | | </el-icon> |
| | | <span>{{ item.name }}</span> |
| | | </template> |
| | | |
| | | <template v-for="(child, i2) in item.children" :key="`${i}-${i2}`"> |
| | | <el-menu-item-group v-if="child.group" :title="child.name"> |
| | | <el-menu-item |
| | | v-for="(child2, i3) in child.children" |
| | | :key="`${i}-${i2}-${i3}`" |
| | | :index="child2.path" |
| | | @click="navPage(item, child, child2)" |
| | | > |
| | | <el-icon v-if="child2.icon"> |
| | | <component :is="child2.icon"></component> |
| | | </el-icon> |
| | | <template #title>{{ child2.name }}</template> |
| | | </el-menu-item> |
| | | </el-menu-item-group> |
| | | <el-menu-item |
| | | v-else |
| | | :index="child.path" |
| | | @click="navPage(item, child)" |
| | | > |
| | | <el-icon v-if="child.icon"> |
| | | <component :is="child.icon"></component> |
| | | </el-icon> |
| | | <template #title>{{ child.name }}</template> |
| | | </el-menu-item> |
| | | </template> |
| | | </el-sub-menu> |
| | | |
| | | <el-menu-item v-else :index="item.path" @click="navPage(item)"> |
| | | <el-icon> |
| | | <component :is="item.icon"></component> |
| | | </el-icon> |
| | | <template #title>{{ item.name }}</template> |
| | | </el-menu-item> |
| | | </template> |
| | | <MenuItems :routes="routes" @navPage="navPage"> </MenuItems> |
| | | </el-scrollbar> |
| | | |
| | | <template v-else> |
| | | <template v-for="(item, i) in routes" :key="`${i}`"> |
| | | <el-sub-menu v-if="item.children" :index="`${i}`"> |
| | | <template #title> |
| | | <el-icon> |
| | | <component :is="item.icon"></component> |
| | | </el-icon> |
| | | <span>{{ item.name }}</span> |
| | | </template> |
| | | |
| | | <template v-for="(child, i2) in item.children" :key="`${i}-${i2}`"> |
| | | <el-menu-item-group v-if="child.group" :title="child.name"> |
| | | <el-menu-item |
| | | v-for="(child2, i3) in child.children" |
| | | :key="`${i}-${i2}-${i3}`" |
| | | :index="child2.path" |
| | | @click="navPage(item, child, child2)" |
| | | > |
| | | <el-icon v-if="child2.icon"> |
| | | <component :is="child2.icon"></component> |
| | | </el-icon> |
| | | <template #title>{{ child2.name }}</template> |
| | | </el-menu-item> |
| | | </el-menu-item-group> |
| | | <el-menu-item |
| | | v-else |
| | | :index="child.path" |
| | | @click="navPage(item, child)" |
| | | > |
| | | <el-icon v-if="child.icon"> |
| | | <component :is="child.icon"></component> |
| | | </el-icon> |
| | | <template #title>{{ child.name }}</template> |
| | | </el-menu-item> |
| | | </template> |
| | | </el-sub-menu> |
| | | |
| | | <el-menu-item v-else :index="item.path" @click="navPage(item)"> |
| | | <el-icon> |
| | | <component :is="item.icon"></component> |
| | | </el-icon> |
| | | <template #title>{{ item.name }}</template> |
| | | </el-menu-item> |
| | | </template> |
| | | <MenuItems :routes="routes" @navPage="navPage"> </MenuItems> |
| | | </template> |
| | | |
| | | <el-row ref="subTitleRef" class="sub-title" justify="center"> |
| | |
| | | emits: ['navPage'], |
| | | data() { |
| | | return { |
| | | isCollapsed: this.collapse, |
| | | menuHeight: '600px', |
| | | title: 'çæç¯å¢çº¿ä¸ç管', |
| | | subTitle: 'Â©ä¸æµ·é£ç¾½ç¯ä¿ç§ææéå
¬å¸', |
| | |
| | | icon: 'Search', |
| | | name: 'ææ±¡æ½è¿', |
| | | }, |
| | | { |
| | | path: '/common/userMatch', |
| | | icon: 'Connection', |
| | | name: 'è´¦æ·å¹é
', |
| | | }, |
| | | ], |
| | | }; |
| | | }, |
| | | watch: {}, |
| | | computed: { |
| | | homePage() { |
| | | return this.routes[0].children |
| | |
| | | methods: { |
| | | handleOpen() {}, |
| | | handleClose() {}, |
| | | collapsedSider() { |
| | | this.isCollapsed = !this.isCollapsed; |
| | | this.$emit('collapsedSider', this.isCollapsed); |
| | | }, |
| | | navPage(...item) { |
| | | const titles = item.map((value) => { |
| | | return value.name; |
| | |
| | | import { useMessageBoxTip, useMessageBox } from './messageBox'; |
| | | |
| | | export function useFormConfirm({ |
| | | defaultForm = undefined, |
| | | submit = { |
| | | do: () => {}, |
| | | }, |
| | | cancel = { |
| | | do: () => {}, |
| | | }, |
| | | reset = { |
| | | do: () => {}, |
| | | }, |
| | | }) { |
| | |
| | | if (!cancel.msg) cancel.msg = 'æ¯å¦æ¾å¼å·²ç¼è¾çå
容ï¼'; |
| | | |
| | | //表åå
容 |
| | | const formObj = ref({}); |
| | | const formObj = ref(defaultForm ? defaultForm : {}); |
| | | let formObjClone = useCloned(formObj, { manual: true }); |
| | | //表åç»ä»¶å¼ç¨ |
| | | const formRef = ref(null); |
| | |
| | | ); |
| | | |
| | | // é置表å |
| | | const reset = function () { |
| | | const _reset = function () { |
| | | edit.value = false; |
| | | isReset = true; |
| | | formObj.value = useCloned(formObjClone.cloned, { |
| | |
| | | }; |
| | | |
| | | // é置表å |
| | | const onReset = function () { |
| | | const onReset = function (tips) { |
| | | if (edit.value) { |
| | | // å¼¹åºç¡®è®¤æ¡ |
| | | useMessageBox({ |
| | | confirmMsg: 'æ¯å¦é置表åå
容ï¼', |
| | | confirmTitle: 'é置表å', |
| | | onConfirm: () => { |
| | | reset(); |
| | | return cancel.do(); |
| | | }, |
| | | }); |
| | | if (tips) { |
| | | // å¼¹åºç¡®è®¤æ¡ |
| | | useMessageBox({ |
| | | confirmMsg: 'æ¯å¦é置表åå
容ï¼', |
| | | confirmTitle: 'é置表å', |
| | | onConfirm: () => { |
| | | _reset(); |
| | | return reset.do(); |
| | | }, |
| | | }); |
| | | } else { |
| | | _reset(); |
| | | reset.do(); |
| | | } |
| | | } else { |
| | | cancel.do(); |
| | | reset.do(); |
| | | } |
| | | }; |
| | | |
| | |
| | | // åºæ¯ç±»åæä¸¾ |
| | | |
| | | // é£ç¾½ç¯å¢ç³»ç» |
| | | function enumScene_1 () { |
| | | function enumScene_1() { |
| | | return [ |
| | | { |
| | | label: 'å
¨é¨', |
| | |
| | | l.shift(); |
| | | return l; |
| | | } |
| | | function getSceneName_1(value) { |
| | | enumScene_1().find((v) => { |
| | | if (v.value == value) { |
| | | return v; |
| | | } |
| | | }); |
| | | } |
| | | |
| | | // é£ç¾½çç®¡ç³»ç» |
| | | function enumScene_2 () { |
| | | function enumScene_2() { |
| | | return [ |
| | | { |
| | | label: 'å
¨é¨', |
| | |
| | | function enumScene_2NA() { |
| | | const l = enumScene_2(); |
| | | l.shift(); |
| | | return l |
| | | return l; |
| | | } |
| | | |
| | | export { enumScene_1, enumScene_1NA, enumScene_2, enumScene_2NA }; |
| | | export { |
| | | enumScene_1, |
| | | enumScene_1NA, |
| | | getSceneName_1, |
| | | enumScene_2, |
| | | enumScene_2NA, |
| | | }; |
| | |
| | | value: '0', |
| | | }, |
| | | { |
| | | label: 'å
é¨ç¨æ·', |
| | | label: 'å
é¨äººå', |
| | | value: '1', |
| | | }, |
| | | { |
| | | label: 'æ¿åºç¨æ·', |
| | | label: 'æ¿åºé¨é¨', |
| | | value: '2', |
| | | }, |
| | | { |
| | | label: 'ä¼ä¸ç¨æ·', |
| | | label: 'ä¼ä¸', |
| | | value: '3', |
| | | }, |
| | | ]; |
| | |
| | | component: () => import('@/views/notice/NoticeManage.vue'), |
| | | }, |
| | | |
| | | // é£ç¾½ç管 |
| | | /**********************************é£ç¾½ç管***********************************************/ |
| | | { |
| | | //è´¦æ·ç®¡ç |
| | | name: 'fyspUser', |
| | |
| | | meta: { transition: 'slide-left' }, |
| | | }, |
| | | |
| | | // é£ç¾½ç¯å¢ |
| | | /**********************************é£ç¾½ç¯å¢***********************************************/ |
| | | { |
| | | //è´¦æ·ç®¡ç |
| | | name: 'fytzUser', |
| | | path: '/fytz/userInfo', |
| | | component: () => import('@/views/baseinfo/fytz/user/UserInfo.vue'), |
| | | component: () => import('@/views/fytz/user/UserInfo.vue'), |
| | | meta: { keepAlive: true }, |
| | | }, |
| | | { |
| | | //è´¦æ·ç¼è¾ |
| | | name: 'fytzUserEdit', |
| | | path: '/fytz/userEdit/:userId', |
| | | component: () => import('@/views/fytz/user/UserEdit.vue'), |
| | | meta: { transition: 'slide-left' }, |
| | | }, |
| | | |
| | | /**********************************éç¨æ¨¡å***********************************************/ |
| | | { |
| | | //è´¦æ·å¹é
|
| | | name: 'userMatch', |
| | | path: '/common/userMatch', |
| | | component: () => import('@/views/common/UserMatch.vue'), |
| | | }, |
| | | ]; |
| | | |
| | |
| | | <el-form-item label="èç³»çµè¯" prop="contactst"> |
| | | <el-input type="tel" v-model="formObj.contactst" placeholder="èç³»çµè¯"> |
| | | <template #prepend> |
| | | <el-icon><Iphone /></el-icon> |
| | | <el-icon> |
| | | <Iphone /> |
| | | </el-icon> |
| | | </template> |
| | | </el-input> |
| | | </el-form-item> |
| | |
| | | }}</span> |
| | | </el-form-item> |
| | | <el-form-item label="ç¼å·" prop="index"> |
| | | <el-input-number |
| | | readonly |
| | | v-model="formObj.index" |
| | | :step="1" |
| | | :min="0" |
| | | /> |
| | | <el-input-number readonly v-model="formObj.index" :step="1" :min="0" /> |
| | | </el-form-item> |
| | | |
| | | <el-form-item> |
| | |
| | | import { defineProps, defineEmits, reactive, ref, watch } from 'vue'; |
| | | import { enumScene_2NA } from '@/enum/scene'; |
| | | import { enumLocationNA } from '@/enum/location'; |
| | | import sceneApi from '@/api/sceneApi'; |
| | | import sceneApi from '@/api/fysp/sceneApi'; |
| | | import { useFormConfirm } from '@/composables/formConfirm'; |
| | | |
| | | const props = defineProps({ |
| | |
| | | import { defineProps, defineEmits, reactive, ref, watch } from 'vue'; |
| | | import { useDateFormat } from '@vueuse/core'; |
| | | import { enumStatusNA, enumStageNA } from '@/enum/construction'; |
| | | import sceneApi from '@/api/sceneApi'; |
| | | import sceneApi from '@/api/fysp/sceneApi'; |
| | | import { useFormConfirm } from '@/composables/formConfirm'; |
| | | |
| | | const props = defineProps({ |
| | |
| | | import { defineProps, defineEmits, reactive, ref, watch } from 'vue'; |
| | | import { useFormConfirm } from '@/composables/formConfirm'; |
| | | import { enumOnlineStatusNA } from '@/enum/onlineStatus'; |
| | | import sceneApi from '@/api/sceneApi'; |
| | | import sceneApi from '@/api/fysp/sceneApi'; |
| | | |
| | | const props = defineProps({ |
| | | //åºæ¯åºæ¬ä¿¡æ¯ |
| | |
| | | () => props.formInfo, |
| | | (nValue) => { |
| | | if (nValue) { |
| | | formObj.value = nValue; |
| | | formObj.value = nValue; |
| | | } |
| | | }, |
| | | } |
| | | ); |
| | | </script> |
| | | |
| | |
| | | </template> |
| | | |
| | | <script> |
| | | import sceneApi from '@/api/sceneApi'; |
| | | import userApi from '@/api/userApi'; |
| | | import sceneApi from '@/api/fysp/sceneApi'; |
| | | import userApi from '@/api/fysp/userApi'; |
| | | // import FormCol from '../../../../components/layout/FormCol.vue'; |
| | | import CompSceneBaseInfo from './CompSceneBaseInfo.vue'; |
| | | import CompSceneConstructionInfo from './CompSceneConstructionInfo.vue'; |
| | |
| | | import { enumScene_2 } from '@/enum/scene'; |
| | | import { enumLocation } from '@/enum/location'; |
| | | import { enumOnlineStatus } from '@/enum/onlineStatus'; |
| | | import sceneApi from '@/api/sceneApi'; |
| | | import sceneApi from '@/api/fysp/sceneApi'; |
| | | import { useLoadingStore } from '@/stores/loadingStore'; |
| | | import { mapStores } from 'pinia'; |
| | | import { useMessageBoxTip } from '@/composables/messageBox'; |
| | |
| | | import { defineProps, defineEmits, reactive, ref, watch } from 'vue'; |
| | | import { enumUserNA } from '@/enum/user'; |
| | | import { useFormConfirm } from '@/composables/formConfirm'; |
| | | import userApi from '@/api/userApi'; |
| | | import userApi from '@/api/fysp/userApi'; |
| | | |
| | | const props = defineProps({ |
| | | //åºæ¬ä¿¡æ¯ |
| | |
| | | </SearchBar> |
| | | </template> |
| | | <template #aside> |
| | | <SideList :items="subtasks" :loading="sideLoading" @item-click="chooseSubtask"></SideList> |
| | | <SideList |
| | | :items="subtasks" |
| | | :loading="sideLoading" |
| | | @item-click="chooseSubtask" |
| | | ></SideList> |
| | | </template> |
| | | <template #main> |
| | | <ToolBar |
| | |
| | | :buttons="buttons" |
| | | :loading="mainLoading" |
| | | ></ToolBar> |
| | | <el-scrollbar v-if="proPicsCard.length > 0" class="el-scrollbar" v-loading="mainLoading"> |
| | | <el-scrollbar |
| | | v-if="proPicsCard.length > 0" |
| | | class="el-scrollbar" |
| | | v-loading="mainLoading" |
| | | > |
| | | <ProblemCard |
| | | v-for="(p, i) in proPicsCard" |
| | | :key="i" |
| | |
| | | @button-click="onProButtonClick" |
| | | ></ProblemCard> |
| | | </el-scrollbar> |
| | | <el-empty v-else description="ææ è®°å½" v-loading="mainLoading"/> |
| | | <el-empty v-else description="ææ è®°å½" v-loading="mainLoading" /> |
| | | </template> |
| | | </BaseContentLayout> |
| | | </template> |
| | | |
| | | <script> |
| | | import taskApi from '@/api/taskApi'; |
| | | import problemApi from '@/api/problemApi'; |
| | | import taskApi from '@/api/fysp/taskApi'; |
| | | import problemApi from '@/api/fysp/problemApi'; |
| | | import ProCheckProxy from './ProCheckProxy'; |
| | | |
| | | import { ElMessageBox, ElNotification, ElMessage } from 'element-plus'; |
| | |
| | | methods: { |
| | | //æ¥è¯¢åä»»å¡ç»è®¡ä¿¡æ¯ |
| | | onSubmit(formSearch) { |
| | | this.sideLoading = true |
| | | this.mainLoading = true |
| | | this.curProList = [] |
| | | this.curSubtask = {} |
| | | this.sideLoading = true; |
| | | this.mainLoading = true; |
| | | this.curProList = []; |
| | | this.curSubtask = {}; |
| | | taskApi.getSubtaskSummary(formSearch).then((res) => { |
| | | const list = []; |
| | | res.forEach((s) => { |
| | |
| | | }); |
| | | this.subtasks = list; |
| | | if (list.length == 0) { |
| | | this.sideLoading = false |
| | | this.mainLoading = false |
| | | this.sideLoading = false; |
| | | this.mainLoading = false; |
| | | } |
| | | }); |
| | | }, |
| | |
| | | }, |
| | | //ç¹å»å·¦ä¾§èåä»»å¡äºä»¶ |
| | | chooseSubtask(s) { |
| | | this.sideLoading = false |
| | | this.mainLoading = true |
| | | this.curSubtask = s; |
| | | this.sideLoading = false; |
| | | this.mainLoading = true; |
| | | // const controller = new AbortController(); |
| | | taskApi.getProBySubtask(s.data.stGuid).then((res) => { |
| | | this.curProList = res; |
| | | }).finally(() => { |
| | | this.mainLoading = false |
| | | }); |
| | | taskApi |
| | | .getProBySubtask(s.data.stGuid) |
| | | .then((res) => { |
| | | this.curProList = res; |
| | | this.curSubtask = s; |
| | | }) |
| | | .finally(() => { |
| | | this.mainLoading = false; |
| | | }); |
| | | }, |
| | | |
| | | // é®é¢å¡çå
鍿é®ç¹å»äºä»¶ |
| | |
| | | title: 'å®¡æ ¸æå', |
| | | message: `该é®é¢å·²${doneMsg}`, |
| | | type: 'success', |
| | | offset: 170 |
| | | offset: 170, |
| | | }); |
| | | }) |
| | | .catch(() => { |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <template> |
| | | <el-row justify="center" class="t-title">{{ title }}</el-row> |
| | | <el-row justify="center"> |
| | | <el-transfer |
| | | class="t-transfer" |
| | | v-model="rightData" |
| | | filterable |
| | | :titles="titles" |
| | | :button-texts="buttonTexts" |
| | | :format="{ |
| | | noChecked: '${total}', |
| | | hasChecked: '${checked}/${total}', |
| | | }" |
| | | :data="leftData" |
| | | target-order="push" |
| | | @change="handleChange" |
| | | > |
| | | <template #default="{ option }"> |
| | | <div class="t-transfer-item"> |
| | | <span>{{ option.label }}</span> |
| | | <div> |
| | | <el-icon><ArrowUp /></el-icon> |
| | | <el-icon><ArrowDown /></el-icon> |
| | | </div> |
| | | </div> |
| | | </template> |
| | | <!-- <template #left-footer> |
| | | <el-button class="transfer-footer" size="small">Operation</el-button> |
| | | </template> |
| | | <template #right-footer> |
| | | <el-button class="transfer-footer" size="small">Operation</el-button> |
| | | </template> --> |
| | | </el-transfer> |
| | | </el-row> |
| | | </template> |
| | | |
| | | <script> |
| | | export default { |
| | | props: { |
| | | title: { |
| | | type: String, |
| | | default: 'æ é¢', |
| | | }, |
| | | titleJustify: { |
| | | type: String, |
| | | default: 'start', |
| | | }, |
| | | leftValue: { |
| | | type: Array, |
| | | }, |
| | | rightValue: { |
| | | type: Array, |
| | | }, |
| | | }, |
| | | data() { |
| | | return { |
| | | leftData: [], |
| | | rightData: [], |
| | | }; |
| | | }, |
| | | watch: { |
| | | leftValue(nV) { |
| | | this.leftData = nV; |
| | | }, |
| | | rightValue(nV) { |
| | | this.rightData = nV; |
| | | }, |
| | | }, |
| | | computed: { |
| | | titles() { |
| | | return this.titleJustify == 'left' |
| | | ? ['åºæ¯å表', '已鿩'] |
| | | : ['已鿩', 'åºæ¯å表']; |
| | | }, |
| | | buttonTexts() { |
| | | return this.titleJustify == 'left' ? ['ç§»é¤', 'æ·»å '] : ['æ·»å ', 'ç§»é¤']; |
| | | }, |
| | | }, |
| | | methods: { |
| | | handleChange(value, direction, movedKeys) { |
| | | console.log(value, direction, movedKeys); |
| | | }, |
| | | }, |
| | | created() { |
| | | const data = []; |
| | | for (let i = 1; i <= 15; i++) { |
| | | data.push({ |
| | | key: i, |
| | | label: `Option ${i}`, |
| | | disabled: i % 4 === 0, |
| | | }); |
| | | } |
| | | this.leftData = data; |
| | | }, |
| | | }; |
| | | </script> |
| | | <style> |
| | | .t-title { |
| | | font-size: 20px; |
| | | margin-bottom: 10px; |
| | | } |
| | | |
| | | .t-transfer { |
| | | /* background-color: aliceblue; */ |
| | | --el-transfer-panel-width: 300px; |
| | | --el-transfer-panel-body-height: 600px; |
| | | } |
| | | |
| | | .t-transfer-item { |
| | | background-color: aliceblue; |
| | | display: flex; |
| | | justify-content: space-between; |
| | | } |
| | | </style> |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <template> |
| | | <el-row :gutter="0"> |
| | | <el-col :span="12" |
| | | ><CompTransfer title="é£ç¾½ç管" title-justify="left"></CompTransfer |
| | | ></el-col> |
| | | <el-col :span="12" |
| | | ><CompTransfer title="é£ç¾½ç¯å¢" title-justify="right"></CompTransfer |
| | | ></el-col> |
| | | </el-row> |
| | | </template> |
| | | |
| | | <script> |
| | | import CompTransfer from './CompTransfer.vue'; |
| | | export default { |
| | | components: { |
| | | CompTransfer, |
| | | }, |
| | | }; |
| | | </script> |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <template> |
| | | <el-page-header @back="onBack"> |
| | | <template #content> |
| | | <span> è´¦æ·ä¿¡æ¯ç¼è¾ </span> |
| | | </template> |
| | | </el-page-header> |
| | | <el-divider /> |
| | | <el-tabs v-model="activeName" class="demo-tabs" @tab-click="handleClick"> |
| | | <el-tab-pane label="åºæ¬ä¿¡æ¯" name="first"> |
| | | <div class="sub-title">ç¨æ·ä¿¡æ¯</div> |
| | | <FormCol> |
| | | <CompUserInfo :form-info="formUser" /> |
| | | </FormCol> |
| | | <el-divider /> |
| | | <div class="sub-title">ç¨æ·ä¿¡æ¯è¡¨</div> |
| | | <FormCol> |
| | | <!-- <CompUserInfos :form-info="formUserInfos" /> --> |
| | | </FormCol> |
| | | <el-divider /> |
| | | <div class="sub-title">ä¼ä¸ä¿¡æ¯</div> |
| | | <FormCol> |
| | | <!-- <CompPanyInfo :form-info="formVehicleBaseInfo" /> --> |
| | | </FormCol> |
| | | <!-- <template v-if="formAnyInfo.typeid == 1"> |
| | | <div class="sub-title">æ²¹çååè£
ç½®</div> |
| | | <FormCol> |
| | | <CompFumePurifyDevice :form-info="formFumePurifyDevice" /> |
| | | </FormCol> |
| | | </template> |
| | | |
| | | |
| | | <template v-if="formAnyInfo.typeid == 1"> |
| | | <div class="sub-title">é¤é¥®åºç¡ä¿¡æ¯è¡¨</div> |
| | | <FormCol> |
| | | <CompRestaurantBaseInfo :form-info="formRestaurantBaseInfo" /> |
| | | </FormCol> |
| | | </template> |
| | | |
| | | <template v-if="formAnyInfo.typeid == 7"> |
| | | <div class="sub-title">汽修åºç¡ä¿¡æ¯è¡¨</div> |
| | | <FormCol> |
| | | <CompVehicleBaseInfo :form-info="formVehicleBaseInfo" /> |
| | | </FormCol> |
| | | </template> --> |
| | | </el-tab-pane> |
| | | <el-tab-pane label="设å¤ç®¡ç" name="second"> |
| | | <el-row> |
| | | <el-col :span="18"> |
| | | <div class="sub-title">çæµè®¾å¤ä¿¡æ¯</div> |
| | | <!-- <CompDeviceInfo :form-info="formDevice" /> --> |
| | | </el-col> |
| | | <el-col :span="6"> |
| | | <el-row justify="end" align="middle" style="height: 80px"> |
| | | <el-button type="success" @click="drawer = true" |
| | | >æ°å¢è®¾å¤</el-button |
| | | > |
| | | </el-row> |
| | | </el-col> |
| | | </el-row> |
| | | </el-tab-pane> |
| | | |
| | | <el-tab-pane label="å±åºææ±¡" name="third"> |
| | | <div class="sub-title">å±åºææ±¡æ¸
å</div> |
| | | <FormCol> |
| | | <!-- <CompHazardousWasteFile :form-info="formHazardousWasteFile" /> --> |
| | | </FormCol> |
| | | <div class="sub-title">å±åºææ±¡è®°å½</div> |
| | | <FormCol> |
| | | <!-- <CompHazardousWasteRecord :form-info="formHazardousWasteRecord" /> --> |
| | | </FormCol> |
| | | </el-tab-pane> |
| | | |
| | | <el-tab-pane label="è¡æ¿å¤ç½" name="fourth"> |
| | | <div class="sub-title">è¡æ¿å¤ç½è¡¨</div> |
| | | <FormCol> |
| | | <!-- <CompPunishment :form-info="formProblem" /> --> |
| | | </FormCol> |
| | | </el-tab-pane> |
| | | |
| | | <el-tab-pane label="信访æè¯" name="fifth"> |
| | | <div class="sub-title">信访æè¯</div> |
| | | <FormCol> |
| | | <!-- <CompLaint :form-info="formLaint" /> --> |
| | | </FormCol> |
| | | </el-tab-pane> |
| | | |
| | | <el-tab-pane label="å·¡æ¥é®é¢è¡¨" name="sixth"> |
| | | <div class="sub-title">å·¡æ¥é®é¢è¡¨</div> |
| | | <FormCol> |
| | | <!-- <CompProblem :form-info="formProblem" /> --> |
| | | </FormCol> |
| | | </el-tab-pane> |
| | | </el-tabs> |
| | | |
| | | <!-- <ComBaseInformation v-model="drawer"></ComBaseInformation> --> |
| | | </template> |
| | | |
| | | <script> |
| | | import userApi from '@/api/fytz/userApi'; |
| | | // import ComBaseInformation from '@/views/baseinfo/fytz/scene/ComBaseInformation.vue'; |
| | | import CompUserInfo from './components/CompUserInfo.vue'; |
| | | // import CompLaint from '@/views/baseinfo/fytz/scene/CompLaint.vue'; |
| | | // import CompDeviceInfo from "@/views/baseinfo/fytz/scene/CompDeviceInfo.vue"; |
| | | // import CompPanyInfo from '@/views/baseinfo/fytz/scene/CompPanyInfo.vue'; |
| | | // import CompFumePurifyDevice from '@/views/baseinfo/fytz/scene/CompFumePurifyDevice.vue'; |
| | | // import CompHazardousWasteFile from '@/views/baseinfo/fytz/scene/CompHazardousWasteFile.vue'; |
| | | // import CompHazardousWasteRecord from '@/views/baseinfo/fytz/scene/CompHazardousWasteRecord.vue'; |
| | | // import CompProblem from '@/views/baseinfo/fytz/scene/CompProblem.vue'; |
| | | // import CompPunishment from '@/views/baseinfo/fytz/scene/CompPunishment.vue'; |
| | | // import CompRestaurantBaseInfo from '@/views/baseinfo/fytz/scene/CompRestaurantBaseInfo.vue'; |
| | | // import CompVehicleBaseInfo from '@/views/baseinfo/fytz/scene/CompVehicleBaseInfo.vue'; |
| | | // import CompUserInfos from '@/views/baseinfo/fytz/scene/CompUserInfos.vue'; |
| | | |
| | | export default { |
| | | components: { |
| | | // ComBaseInformation, |
| | | // CompLaint, |
| | | CompUserInfo, |
| | | // CompDeviceInfo, |
| | | // CompPanyInfo, |
| | | // CompFumePurifyDevice, |
| | | // CompHazardousWasteFile, |
| | | // CompHazardousWasteRecord, |
| | | // CompProblem, |
| | | // CompPunishment, |
| | | // CompRestaurantBaseInfo, |
| | | // CompVehicleBaseInfo, |
| | | // CompUserInfos, |
| | | }, |
| | | data() { |
| | | return { |
| | | drawer: false, |
| | | formUser: {}, |
| | | // formSubScene: {}, |
| | | formLaint: {}, |
| | | // formDevice: {}, |
| | | formPanyInfo: {}, |
| | | formFumePurifyDevice: {}, |
| | | formHazardousWasteFile: {}, |
| | | formHazardousWasteRecord: {}, |
| | | formProblem: {}, |
| | | formPunishment: {}, |
| | | formRestaurantBaseInfo: {}, |
| | | formVehicleBaseInfo: {}, |
| | | formUserInfos: {}, |
| | | activeName: 'first', |
| | | scroll: '', |
| | | }; |
| | | }, |
| | | beforeRouteEnter(to, from, next) { |
| | | userApi.fetchUserBaseInfo(to.params.userId).then((res) => { |
| | | next((vm) => { |
| | | if (res.userInfo) { |
| | | vm.formUser = res.userInfo; |
| | | } else { |
| | | vm.formUser = { |
| | | guid: to.params.userId, |
| | | }; |
| | | } |
| | | }); |
| | | }); |
| | | }, |
| | | methods: { |
| | | handleClick(tab) { |
| | | console.log('tab', tab); |
| | | }, |
| | | // åéé¡µé¢ |
| | | onBack() { |
| | | this.$router.back(); |
| | | }, |
| | | }, |
| | | }; |
| | | </script> |
| | | <style scoped> |
| | | .sub-title { |
| | | font-size: var(--el--font--size--large); |
| | | margin-bottom: 30px; |
| | | margin-top: 30px; |
| | | margin-left: 20px; |
| | | } |
| | | </style> |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <template> |
| | | <el-row ref="searchRef"> |
| | | <el-col> |
| | | <el-form :inline="true" :model="formSearch"> |
| | | <el-form-item label="ç/å¸/åº/é" prop="_locations"> |
| | | <el-cascader |
| | | v-model="formSearch._locations" |
| | | :options="locations" |
| | | placeholder="ç/å¸/åº/é" |
| | | :props="props" |
| | | style="width: 280px" |
| | | /> |
| | | </el-form-item> |
| | | <el-form-item label="åºæ¯åç§°" prop="searchText"> |
| | | <el-input |
| | | clearable |
| | | v-model="formSearch.searchText" |
| | | placeholder="è¾å
¥æç´¢åºæ¯åç§°" |
| | | /> |
| | | </el-form-item> |
| | | <el-form-item label="ç¨æ·ç±»å" prop="scensetypeid"> |
| | | <el-select |
| | | v-model="formSearch.scensetypeid" |
| | | placeholder="ç¨æ·ç±»å" |
| | | style="width: 75px" |
| | | > |
| | | <el-option |
| | | v-for="s in sceneTypes" |
| | | :key="s.value" |
| | | :label="s.label" |
| | | :value="s.value" |
| | | /> |
| | | </el-select> |
| | | </el-form-item> |
| | | <el-form-item label="ä¸çº¿ç¶æ" prop="online"> |
| | | <el-select |
| | | v-model="formSearch.online" |
| | | placeholder="å
¨é¨" |
| | | style="width: 75px" |
| | | > |
| | | <el-option |
| | | v-for="s in onlineStatus" |
| | | :key="s.value" |
| | | :label="s.label" |
| | | :value="s.value" |
| | | /> |
| | | </el-select> |
| | | </el-form-item> |
| | | <el-form-item> |
| | | <el-button icon="Search" type="primary" @click="onSearch" |
| | | >æ¥è¯¢</el-button |
| | | > |
| | | </el-form-item> |
| | | </el-form> |
| | | </el-col> |
| | | </el-row> |
| | | <el-table |
| | | :data="tableData" |
| | | v-loading="loading" |
| | | table-layout="fixed" |
| | | :row-class-name="tableRowClassName" |
| | | :height="tableHeight" |
| | | > |
| | | <el-table-column prop="realname" label="å
¬å¸" align="center"> |
| | | <template #default="scope"> |
| | | <el-tooltip |
| | | effect="dark" |
| | | :content="scope.row.realname" |
| | | placement="top-start" |
| | | :show-after="500" |
| | | > |
| | | {{ scope.row.realname }} |
| | | </el-tooltip> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column prop="telephone" label="çµè¯" align="center" /> |
| | | <el-table-column |
| | | prop="extension1" |
| | | label="åºå¿" |
| | | width="120" |
| | | align="center" |
| | | /> |
| | | <el-table-column prop="usertype" label="ç±»å" align="center" /> |
| | | <el-table-column prop="departmentname" label="åç§°"> |
| | | <template #default="scope"> |
| | | <el-tooltip |
| | | effect="dark" |
| | | :content="scope.row.departmentname" |
| | | placement="top-start" |
| | | :show-after="500" |
| | | > |
| | | {{ scope.row.departmentname }} |
| | | </el-tooltip> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column fixed="right" label="æä½" width="140"> |
| | | <template #header> |
| | | <el-button icon="DocumentAdd" type="success" @click="drawer = true" |
| | | >æ°å¢ç¨æ·</el-button |
| | | > |
| | | </template> |
| | | <template #default="scope"> |
| | | <el-button |
| | | :loading="scope.row.loading1" |
| | | type="default" |
| | | size="small" |
| | | @click="editRow(scope)" |
| | | >ç¼è¾</el-button |
| | | > |
| | | <el-button |
| | | :loading="scope.row.loading2" |
| | | :type="scope.row.extension1 != '0' ? 'danger' : 'primary'" |
| | | size="small" |
| | | @click="itemActive(scope)" |
| | | >{{ scope.row.extension1 != '0' ? 'ä¸çº¿' : 'ä¸çº¿' }}</el-button |
| | | > |
| | | </template> |
| | | </el-table-column> |
| | | </el-table> |
| | | |
| | | <el-pagination |
| | | ref="paginationRef" |
| | | class="el-pagination" |
| | | v-model:current-page="currentPage" |
| | | v-model:page-size="pageSize" |
| | | :page-sizes="[10, 20, 50, 100]" |
| | | :background="true" |
| | | layout="total, sizes, prev, pager, next, jumper" |
| | | :total="total" |
| | | /> |
| | | |
| | | <CompUserInfoAddDrawer v-model:drawer="drawer"></CompUserInfoAddDrawer> |
| | | </template> |
| | | |
| | | <script> |
| | | import { enumScene_1 } from '@/enum/scene'; |
| | | import { enumLocation } from '@/enum/location'; |
| | | import { enumOnlineStatus } from '@/enum/onlineStatus'; |
| | | import userApi from '@/api/fytz/userApi'; |
| | | import { useLoadingStore } from '@/stores/loadingStore'; |
| | | import { mapStores } from 'pinia'; |
| | | import { useMessageBoxTip } from '@/composables/messageBox'; |
| | | import CompUserInfoAddDrawer from './components/CompUserInfoAddDrawer.vue'; |
| | | |
| | | export default { |
| | | components: { |
| | | CompUserInfoAddDrawer, |
| | | }, |
| | | data() { |
| | | return { |
| | | locations: enumLocation(), |
| | | sceneTypes: enumScene_1(), |
| | | onlineStatus: enumOnlineStatus(), |
| | | formSearch: { |
| | | _locations: [], |
| | | searchText: '', |
| | | scensetypeid: '', |
| | | online: '', |
| | | }, |
| | | |
| | | props: { |
| | | checkStrictly: true, |
| | | }, |
| | | |
| | | tableData: [], |
| | | tableHeight: '500', |
| | | loading: false, |
| | | |
| | | currentPage: 1, |
| | | pageSize: 20, |
| | | total: 0, |
| | | |
| | | drawer: false, |
| | | }; |
| | | }, |
| | | watch: { |
| | | currentPage(nValue, oValue) { |
| | | if (nValue != oValue) { |
| | | this.onSearch(); |
| | | } |
| | | }, |
| | | pageSize(nValue, oValue) { |
| | | if (nValue != oValue) { |
| | | this.onSearch(); |
| | | } |
| | | }, |
| | | }, |
| | | computed: { |
| | | ...mapStores(useLoadingStore), |
| | | }, |
| | | methods: { |
| | | onSearch() { |
| | | this.loading = true; |
| | | const f = this.formSearch; |
| | | const area = {}; |
| | | // è¡æ¿åºå |
| | | f._locations.length > 0 |
| | | ? ([area.provinceCode, area.provinceName] = f._locations[0]) |
| | | : ([area.provinceCode, area.provinceName] = [null, null]); |
| | | if (area.provinceCode == '0') |
| | | [area.provinceCode, area.provinceName] = [null, null]; |
| | | f._locations.length > 1 |
| | | ? (area.citycode = f._locations[1][0]) |
| | | : (area.citycode = null); |
| | | f._locations.length > 2 |
| | | ? ([area.districtCode, area.districtName] = f._locations[2]) |
| | | : ([area.districtCode, area.districtName] = [null, null]); |
| | | f._locations.length > 3 |
| | | ? (area.towncode = f._locations[3][0]) |
| | | : (area.towncode = null); |
| | | // åºæ¯ç±»å |
| | | area.scensetypeid = f.scensetypeid; |
| | | if (area.scensetypeid == '0') area.scensetypeid = null; |
| | | // ä¸ä¸çº¿ç¶æ |
| | | area.online = f.online; |
| | | // å
³é®å |
| | | area.searchText = f.searchText; |
| | | |
| | | userApi |
| | | .fetchUser('00EQQVnE9QFvbkQr', this.currentPage, this.pageSize, area) |
| | | .then((res) => { |
| | | if (res) { |
| | | this.tableData = res.data; |
| | | this.currentPage = res.headers.currentPage; |
| | | console.log(res.headers); |
| | | this.total = parseInt(res.headers.totalPage) * this.pageSize; |
| | | } |
| | | }) |
| | | .finally(() => { |
| | | this.loading = false; |
| | | }); |
| | | }, |
| | | calcTableHeight() { |
| | | const h1 = this.$refs.searchRef.$el.offsetHeight; |
| | | const h2 = this.$refs.paginationRef.$el.offsetHeight; |
| | | // return `calc(100vh - ${h1}px - ${h2}px - var(--el-main-padding) * 2 - var(--el-header-height))`; |
| | | return `calc(100vh - ${h1}px - ${h2}px - 60px - var(--el-main-padding) * 2)`; |
| | | }, |
| | | editRow(scope) { |
| | | scope.row.loading1 = true; |
| | | this.loadingStore.loadingStatus.push(() => (scope.row.loading1 = false)); |
| | | this.$router.push(`userEdit/${scope.row.guid}`); |
| | | }, |
| | | itemActive(scope) { |
| | | const rb = {}; |
| | | rb.guid = scope.row.guid; |
| | | rb.extension1 = scope.row.extension1 != '0' ? '0' : '1'; |
| | | const msg = scope.row.extension1 != '0' ? 'ä¸çº¿' : 'ä¸çº¿'; |
| | | useMessageBoxTip({ |
| | | confirmMsg: `确认${msg}è¯¥åºæ¯ï¼`, |
| | | confirmTitle: msg, |
| | | onConfirm: () => { |
| | | scope.row.loading2 = true; |
| | | userApi |
| | | .updateScene(rb) |
| | | .then((res) => { |
| | | if (res == 1) { |
| | | scope.row.extension1 = rb.extension1; |
| | | } |
| | | }) |
| | | .finally(() => { |
| | | scope.row.loading2 = false; |
| | | }); |
| | | }, |
| | | }); |
| | | }, |
| | | tableRowClassName({ row }) { |
| | | return row.extension1 != '0' ? 'online-row' : 'offline-row'; |
| | | }, |
| | | }, |
| | | mounted() { |
| | | this.formSearch.scensetypeid = this.sceneTypes[0].value; |
| | | this.formSearch._locations = [this.locations[0].value]; |
| | | this.formSearch.online = this.onlineStatus[0].value; |
| | | this.tableHeight = this.calcTableHeight(); |
| | | this.onSearch(); |
| | | }, |
| | | }; |
| | | </script> |
| | | <style> |
| | | .el-table .offline-row { |
| | | background-color: var(--el-disabled-bg-color); |
| | | color: var(--el-disabled-text-color); |
| | | } |
| | | .el-table .cell { |
| | | white-space: nowrap; |
| | | color: var(--el-disabled-text-color); |
| | | } |
| | | .el-pagination { |
| | | background-color: var(--el-color-white); |
| | | padding-top: 20px; |
| | | border-top: 1px solid rgba(0, 0, 0, 0.096); |
| | | /* margin-top: 2px; */ |
| | | } |
| | | </style> |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <template> |
| | | <el-form |
| | | :inline="false" |
| | | :model="formObj" |
| | | ref="formRef" |
| | | :rules="rules" |
| | | label-position="right" |
| | | label-width="150px" |
| | | > |
| | | <!-- <el-form-item label="id" prop="GUID"> |
| | | <el-input clearable v-model="formObj.GUID" placeholder="id" /> |
| | | </el-form-item> --> |
| | | <!-- <el-form-item label="头åurl" prop="HeadIconUrl"> |
| | | <el-input clearable v-model="formObj.HeadIconUrl" placeholder="头åurl" /> |
| | | </el-form-item> --> |
| | | <el-form-item label="è´¦æ·å" prop="acountname"> |
| | | <el-input clearable v-model="formObj.acountname" placeholder="è´¦æ·å" /> |
| | | </el-form-item> |
| | | <el-form-item label="ç¨æ·æµç§°" prop="realname"> |
| | | <el-input clearable v-model="formObj.realname" placeholder="ç¨æ·æµç§°" /> |
| | | </el-form-item> |
| | | <el-form-item label="å¯ç " prop="password"> |
| | | <el-input |
| | | clearable |
| | | type="password" |
| | | v-model="formObj.password" |
| | | placeholder="é»è®¤å¯ç 123456" |
| | | /> |
| | | </el-form-item> |
| | | <!-- <el-form-item label="ç¨æ·ç±»åid" prop="UserTypeID"> |
| | | <el-input |
| | | clearable |
| | | v-model="formObj.UserTypeID" |
| | | placeholder="ç¨æ·ç±»åid" |
| | | /> |
| | | </el-form-item> --> |
| | | <el-form-item label="ç¨æ·ç±»å" prop="_usertype"> |
| | | <el-select v-model="formObj._usertype" placeholder="ç¨æ·ç±»å"> |
| | | <el-option |
| | | v-for="s in userTypes" |
| | | :key="s.value" |
| | | :label="s.label" |
| | | :value="s" |
| | | /> |
| | | </el-select> |
| | | </el-form-item> |
| | | <el-form-item label="æå±ä¼ä¸" prop="departmentname"> |
| | | <el-input |
| | | clearable |
| | | v-model="formObj.departmentname" |
| | | placeholder="æå±ä¼ä¸" |
| | | disabled |
| | | /> |
| | | </el-form-item> |
| | | <el-form-item label="æ¯å¦å¯ç¨" prop="isenable"> |
| | | <el-switch v-model="formObj.isenable" /> |
| | | <span style="margin-left: 16px">{{ |
| | | formObj.isenable ? 'å¯ç¨' : 'ä¸å¯ç¨' |
| | | }}</span> |
| | | </el-form-item> |
| | | <el-form-item label="å·¥å·" prop="workno"> |
| | | <el-input clearable v-model="formObj.workno" placeholder="å·¥å·" /> |
| | | </el-form-item> |
| | | |
| | | <el-form-item label="ææº" prop="telephone"> |
| | | <el-input |
| | | clearable |
| | | type="tel" |
| | | v-model="formObj.telephone" |
| | | placeholder="ææº" |
| | | /> |
| | | </el-form-item> |
| | | <!-- <el-form-item label="微信id" prop="WechatID"> |
| | | <el-input clearable v-model="formObj.WechatID" placeholder="微信id" /> |
| | | </el-form-item> --> |
| | | <el-form-item label="ç/å¸/åº/é" prop="_locations"> |
| | | <el-cascader |
| | | v-model="formObj._locations" |
| | | :options="locations" |
| | | placeholder="ç/å¸/åº/é" |
| | | :props="locationsProps" |
| | | style="width: 280px" |
| | | :disabled="!create" |
| | | /> |
| | | </el-form-item> |
| | | <el-form-item label="åºæ¯ç±»å" prop="_scenetype"> |
| | | <el-select |
| | | v-model="formObj._scenetype" |
| | | placeholder="åºæ¯ç±»å" |
| | | > |
| | | <el-option |
| | | v-for="s in sceneTypes" |
| | | :key="s.value" |
| | | :label="s.label" |
| | | :value="s" |
| | | /> |
| | | </el-select> |
| | | </el-form-item> |
| | | <el-form-item> |
| | | <el-button |
| | | :disabled="!edit" |
| | | type="primary" |
| | | @click="onSubmit" |
| | | :loading="loading" |
| | | >æäº¤</el-button |
| | | > |
| | | <el-button :disabled="!edit" @click="onReset">éç½®</el-button> |
| | | </el-form-item> |
| | | </el-form> |
| | | </template> |
| | | |
| | | <script setup> |
| | | import { defineProps, defineEmits, reactive, ref, watch } from 'vue'; |
| | | import { useFormConfirm } from '@/composables/formConfirm'; |
| | | import { enumUserNA } from '@/enum/user'; |
| | | import { enumScene_1NA, getSceneName_1 } from '@/enum/scene'; |
| | | import { enumLocationNA } from '@/enum/location'; |
| | | import userApi from '@/api/fytz/userApi'; |
| | | |
| | | const props = defineProps({ |
| | | //åºæ¬ä¿¡æ¯ |
| | | formInfo: Object, |
| | | isEdit: Boolean, |
| | | create: { |
| | | type: Boolean, |
| | | default: false, |
| | | }, |
| | | active: { |
| | | type: Boolean, |
| | | default: false, |
| | | }, |
| | | }); |
| | | |
| | | const emit = defineEmits(['onSubmit', 'onCancel', 'update:isEdit']); |
| | | |
| | | const { formObj, formRef, edit, onSubmit, onReset } = useFormConfirm({ |
| | | defaultForm: { |
| | | isenable: true, |
| | | }, |
| | | submit: { |
| | | do: submit, |
| | | }, |
| | | cancel: { |
| | | do: cancel, |
| | | }, |
| | | }); |
| | | |
| | | const userTypes = reactive(enumUserNA()); |
| | | const sceneTypes = reactive(enumScene_1NA()); |
| | | const locations = enumLocationNA(); |
| | | const locationsProps = reactive({ |
| | | checkStrictly: true, |
| | | }); |
| | | const loading = ref(false); |
| | | |
| | | const rules = reactive({ |
| | | acountname: [ |
| | | { |
| | | required: true, |
| | | message: 'è´¦æ·åä¸è½ä¸ºç©º', |
| | | trigger: 'blur', |
| | | }, |
| | | ], |
| | | realname: [ |
| | | { |
| | | required: true, |
| | | message: 'ç¨æ·æµç§°ä¸è½ä¸ºç©º', |
| | | trigger: 'blur', |
| | | }, |
| | | ], |
| | | password: [ |
| | | { |
| | | required: props.create, |
| | | message: 'å¯ç ä¸è½ä¸ºç©º', |
| | | trigger: 'blur', |
| | | }, |
| | | ], |
| | | _usertype: [ |
| | | { |
| | | required: true, |
| | | message: 'ç¨æ·ç±»åä¸è½ä¸ºç©º', |
| | | trigger: 'change', |
| | | }, |
| | | ], |
| | | _locations: [ |
| | | { |
| | | required: props.create, |
| | | message: 'ç/å¸/åº/éä¸è½ä¸ºç©º', |
| | | trigger: 'change', |
| | | }, |
| | | ], |
| | | _scenetype: [ |
| | | { |
| | | required: true, |
| | | message: 'åºæ¯ç±»åä¸è½ä¸ºç©º', |
| | | trigger: 'change', |
| | | }, |
| | | ], |
| | | }); |
| | | |
| | | // ç¨æ·åºæ¬ä¿¡æ¯æ ¼å¼å |
| | | function parseUserInfo(s) { |
| | | s._usertype = { |
| | | label: s.usertype, |
| | | value: s.usertypeid + '', |
| | | }; |
| | | |
| | | s._scenetype = { |
| | | label: getSceneName_1(s.extension2), |
| | | value: s.extension2, |
| | | }; |
| | | |
| | | s._locations = []; |
| | | // if (s.provincecode && s.provincecode.length > 0) |
| | | // s._locations.push([s.provincecode, s.provincename]); |
| | | // if (s.citycode && s.citycode.length > 0) |
| | | // s._locations.push([s.citycode, s.cityname]); |
| | | // if (s.districtcode && s.districtcode.length > 0) |
| | | // s._locations.push([s.districtcode, s.districtname]); |
| | | // if (s.towncode && s.towncode.length > 0) |
| | | // s._locations.push([s.towncode, s.townname]); |
| | | |
| | | return s; |
| | | } |
| | | |
| | | function createUser() { |
| | | loading.value = true; |
| | | return userApi |
| | | .createUser(formObj.value) |
| | | .then(() => { |
| | | emit('onSubmit', formObj); |
| | | }) |
| | | .finally(() => { |
| | | loading.value = false; |
| | | }); |
| | | } |
| | | |
| | | function updateUser() { |
| | | loading.value = true; |
| | | return userApi |
| | | .updateUserInfo(formObj.value) |
| | | .then(() => { |
| | | emit('onSubmit', formObj); |
| | | }) |
| | | .finally(() => { |
| | | loading.value = false; |
| | | }); |
| | | } |
| | | |
| | | function submit() { |
| | | // è¡æ¿åºåä¿¡æ¯å¡«å
|
| | | const a = formObj.value._locations; |
| | | if (a[0]) { |
| | | formObj.value.provincecode = a[0][0]; |
| | | formObj.value.provincename = a[0][1]; |
| | | } |
| | | if (a[1]) { |
| | | formObj.value.citycode = a[1][0]; |
| | | formObj.value.cityname = a[1][1]; |
| | | } |
| | | if (a[2]) { |
| | | formObj.value.districtcode = a[2][0]; |
| | | formObj.value.extension1 = a[2][1]; |
| | | } |
| | | if (a[3]) { |
| | | formObj.value.towncode = a[3][0]; |
| | | formObj.value.townname = a[3][1]; |
| | | } |
| | | |
| | | // ç¨æ·ç±»åä¿¡æ¯å¡«å
|
| | | const b = formObj.value._usertype; |
| | | formObj.value.usertypeid = b.value; |
| | | formObj.value.usertype = b.label; |
| | | |
| | | // åºæ¯ç±»åä¿¡æ¯å¡«å
|
| | | const c = formObj.value._scenetype; |
| | | formObj.value.extension2 = c.value; |
| | | |
| | | return props.create ? createUser() : updateUser(); |
| | | } |
| | | |
| | | function cancel() { |
| | | emit('onCancel'); |
| | | } |
| | | |
| | | watch( |
| | | () => props.formInfo, |
| | | (nValue) => { |
| | | formObj.value = parseUserInfo(nValue); |
| | | } |
| | | ); |
| | | |
| | | watch( |
| | | () => props.active, |
| | | (nValue) => { |
| | | if (!nValue) { |
| | | onReset(); |
| | | } |
| | | } |
| | | ); |
| | | |
| | | watch(edit, (nValue) => { |
| | | emit('update:isEdit', nValue); |
| | | }); |
| | | </script> |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <template> |
| | | <el-drawer |
| | | v-model="drawer_" |
| | | title="æ°å¢ç¨æ·" |
| | | direction="rtl" |
| | | :before-close="onDrawerClose" |
| | | > |
| | | <CompUserInfo |
| | | :create="true" |
| | | :active="drawer" |
| | | v-model:is-edit="drawerEdit" |
| | | @on-submit="onDrawerSubmit" |
| | | @on-cancel="onDrawerCancel" |
| | | ></CompUserInfo> |
| | | </el-drawer> |
| | | </template> |
| | | |
| | | <script> |
| | | import CompUserInfo from './CompUserInfo.vue'; |
| | | import { useMessageBox } from '@/composables/messageBox'; |
| | | |
| | | export default { |
| | | components: { CompUserInfo }, |
| | | props: ['drawer'], |
| | | emits: ['update:drawer'], |
| | | data() { |
| | | return { |
| | | drawer_: this.drawer, |
| | | drawerEdit: false, |
| | | }; |
| | | }, |
| | | watch: { |
| | | drawer(nValue) { |
| | | this.drawer_ = nValue; |
| | | }, |
| | | drawer_(nValue) { |
| | | this.$emit('update:drawer', nValue); |
| | | }, |
| | | }, |
| | | methods: { |
| | | onDrawerSubmit() { |
| | | // å
³éå¼¹åºæ¡ |
| | | this.drawer_ = false; |
| | | }, |
| | | onDrawerClose(done) { |
| | | if (this.drawerEdit) { |
| | | // å¼¹åºç¡®è®¤æ¡ |
| | | useMessageBox({ |
| | | confirmMsg: 'æ¯å¦æ¾å¼å·²ç¼è¾çå
容ï¼', |
| | | confirmTitle: 'åæ¶', |
| | | onConfirm: () => { |
| | | done(); |
| | | }, |
| | | }); |
| | | } else { |
| | | // ç´æ¥å
³é |
| | | done(); |
| | | } |
| | | }, |
| | | onDrawerCancel() { |
| | | this.onDrawerClose(() => { |
| | | this.drawer_ = false; |
| | | }); |
| | | }, |
| | | }, |
| | | }; |
| | | </script> |
| | |
| | | //éç¥å
容 |
| | | content: '', |
| | | //éç¥å¾ç |
| | | picUrl: '', |
| | | picUrl: null, |
| | | //éç¥é¾æ¥ |
| | | bodyUrl: '', |
| | | //æ¯å¦éè¦ç¾æ¶ |
| | |
| | | //æ¥åç¨æ·åºå¿ |
| | | district: '0', |
| | | //æ¥åç¨æ·id |
| | | receiverId: '', |
| | | receiverId: null, |
| | | }, |
| | | rules: { |
| | | title: [ |
| | |
| | | </template> |
| | | |
| | | <script> |
| | | import noticeApi from '@/api/noticeApi'; |
| | | import noticeApi from '@/api/fytz/noticeApi'; |
| | | import CompNoticeAdd from './CompNoticeAdd.vue'; |
| | | import { useMessageBoxTip, useMessageBox } from '@/composables/messageBox'; |
| | | |
| | |
| | | </template> |
| | | |
| | | <script> |
| | | import noticeApi from '@/api/noticeApi'; |
| | | import noticeApi from '@/api/fytz/noticeApi'; |
| | | import { useDateFormat } from '@vueuse/core'; |
| | | import { enumScene_1 } from '@/enum/scene'; |
| | | import { enumDistrict } from '@/enum/district'; |