From a2299a6d4a6f99e9c11132138f5d3e9ec68f03ea Mon Sep 17 00:00:00 2001 From: jiangping <jp@doumee.com> Date: 星期五, 06 六月 2025 19:19:34 +0800 Subject: [PATCH] 开发更新 --- admin/src/views/Inspection/components/OperaYwPatrolSchemeWindow.vue | 304 +++++++++++++++++++++++++++++++++++++++----------- 1 files changed, 237 insertions(+), 67 deletions(-) diff --git a/admin/src/views/Inspection/components/OperaYwPatrolSchemeWindow.vue b/admin/src/views/Inspection/components/OperaYwPatrolSchemeWindow.vue index d4e36c0..a5e0fe1 100644 --- a/admin/src/views/Inspection/components/OperaYwPatrolSchemeWindow.vue +++ b/admin/src/views/Inspection/components/OperaYwPatrolSchemeWindow.vue @@ -1,74 +1,52 @@ <template> - <GlobalWindow - :title="title" - :visible.sync="visible" - :confirm-working="isWorking" - @confirm="confirm" - > + <GlobalWindow width="520px" :title="title" @close="close" :visible.sync="visible" :confirm-working="isWorking" + @confirm="confirm"> + <div class="warnning"> + {{ form.id ? '缂栬緫璁″垝瀵瑰凡鐢熸垚鐨勪换鍔℃棤鏁堬紝浼氬湪涓嬫鐢熸垚浠诲姟鏃剁敓鏁堬紝涓斿綋澶╀笉浼氱敓鎴愪袱涓换鍔�' : '鏂板缓宸℃璁″垝浼氫粠褰撳ぉ寮�濮嬶紝鎸夌収閰嶇疆瑙勫垯浜х敓瀵瑰簲鐨勫贰妫�浠诲姟' }} + </div> <el-form :model="form" ref="form" :rules="rules"> - <el-form-item label="鍒涘缓浜虹紪鐮�" prop="creator"> - <el-input v-model="form.creator" placeholder="璇疯緭鍏ュ垱寤轰汉缂栫爜" v-trim/> + <el-form-item label="璁″垝鍚嶇О" prop="title"> + <el-input v-model="form.title" placeholder="璇疯緭鍏ユ爣棰�" v-trim /> </el-form-item> - <el-form-item label="鍒涘缓鏃堕棿" prop="createDate"> - <el-date-picker v-model="form.createDate" value-format="yyyy-MM-dd" placeholder="璇疯緭鍏ュ垱寤烘椂闂�"></el-date-picker> + <el-form-item label="宸℃绾胯矾" prop="lineId"> + <el-select v-model="form.lineId" filterable clearable> + <el-option v-for="item in lineList" :value="item.id" :label="item.name"></el-option> + </el-select> </el-form-item> - <el-form-item label="鏇存柊浜虹紪鐮�" prop="editor"> - <el-input v-model="form.editor" placeholder="璇疯緭鍏ユ洿鏂颁汉缂栫爜" v-trim/> + <el-form-item label="宸℃璐熻矗浜�" prop="userIds"> + <el-select v-model="form.userIds" multiple filterable clearable> + <el-option v-for="item in staffList" :value="item.id" :label="item.realname"></el-option> + </el-select> </el-form-item> - <el-form-item label="鏇存柊鏃堕棿" prop="editDate"> - <el-date-picker v-model="form.editDate" value-format="yyyy-MM-dd" placeholder="璇疯緭鍏ユ洿鏂版椂闂�"></el-date-picker> + <el-form-item label="璁″垝寮�濮嬫棩鏈�-缁撴潫鏃ユ湡" prop="selDate"> + <el-date-picker v-model="form.selDate" @change="changeDate" is-range range-separator="-" + value-format="yyyy-MM-dd" type="daterange" start-placeholder="寮�濮嬫棩鏈�" end-placeholder="缁撴潫鏃ユ湡" /> </el-form-item> - <el-form-item label="鏄惁鍒犻櫎0鍚� 1鏄�" prop="isdeleted"> - <el-input v-model="form.isdeleted" placeholder="璇疯緭鍏ユ槸鍚﹀垹闄�0鍚� 1鏄�" v-trim/> + <el-form-item label="璁″垝鎵ц鏃堕棿"> + <el-time-picker v-model="form.selTime" @change="changeTime" is-range range-separator="-" format="HH:mm" + value-format="HH:mm:ss" start-placeholder="寮�濮嬫椂闂�" end-placeholder="缁撴潫鏃堕棿" placeholder="閫夋嫨鏃堕棿鑼冨洿" /> </el-form-item> - <el-form-item label="鏍囬" prop="title"> - <el-input v-model="form.title" placeholder="璇疯緭鍏ユ爣棰�" v-trim/> + <el-form-item label="閲嶅棰戠巼"> + <el-select v-model="form.circleType" @change="changeType" filterable> + <el-option :value="0" label="姣忓ぉ"></el-option> + <el-option :value="1" label="姣忓懆"></el-option> + <el-option :value="2" label="姣忔湀"></el-option> + </el-select> </el-form-item> - <el-form-item label="澶囨敞" prop="remark"> - <el-input v-model="form.remark" placeholder="璇疯緭鍏ュ娉�" v-trim/> + <el-form-item v-if="form.circleType == 1" prop="circleDays" label="閲嶅瑙勫垯"> + <div class="weeks"> + <div class="week" @click="weekClick(i)" :class="{ active: item.sel }" v-for="item, i in weeks">{{ item.la }} + </div> + </div> </el-form-item> - <el-form-item label="鐘舵�� 0鍚敤 1绂佺敤" prop="status"> - <el-input v-model="form.status" placeholder="璇疯緭鍏ョ姸鎬� 0鍚敤 1绂佺敤" v-trim/> + <el-form-item v-if="form.circleType == 2" prop="circleDays" label="閲嶅瑙勫垯"> + <div class="weeks"> + <div class="week" @click="monthClick(i)" :class="{ active: item.sel }" v-for="item, i in monthsList">{{ + item.la + }}</div> + </div> </el-form-item> - <el-form-item label="鎺掑簭鐮�" prop="sortnum"> - <el-input v-model="form.sortnum" placeholder="璇疯緭鍏ユ帓搴忕爜" v-trim/> - </el-form-item> - <el-form-item label="宸℃鐐圭紪鐮�(鍏宠仈yw_patrol_line)" prop="lineId"> - <el-input v-model="form.lineId" placeholder="璇疯緭鍏ュ贰妫�鐐圭紪鐮�(鍏宠仈yw_patrol_line)" v-trim/> - </el-form-item> - <el-form-item label="宸℃璐熻矗浜虹紪鐮侀泦鍚堬紝澶氫釜浣跨敤鑻辨枃閫楀彿闅斿紑" prop="userIds"> - <el-input v-model="form.userIds" placeholder="璇疯緭鍏ュ贰妫�璐熻矗浜虹紪鐮侀泦鍚堬紝澶氫釜浣跨敤鑻辨枃閫楀彿闅斿紑" v-trim/> - </el-form-item> - <el-form-item label="澶勭悊浜虹紪鐮�(鍏宠仈system_user)" prop="dealUserId"> - <el-input v-model="form.dealUserId" placeholder="璇疯緭鍏ュ鐞嗕汉缂栫爜(鍏宠仈system_user)" v-trim/> - </el-form-item> - <el-form-item label="澶勭悊鏃堕棿" prop="dealDate"> - <el-date-picker v-model="form.dealDate" value-format="yyyy-MM-dd" placeholder="璇疯緭鍏ュ鐞嗘椂闂�"></el-date-picker> - </el-form-item> - <el-form-item label="澶勭悊澶囨敞" prop="dealInfo"> - <el-input v-model="form.dealInfo" placeholder="璇疯緭鍏ュ鐞嗗娉�" v-trim/> - </el-form-item> - <el-form-item label="寰幆鍛ㄦ湡 0姣忓ぉ 1姣忓懆 2姣忓ぉ" prop="circleType"> - <el-input v-model="form.circleType" placeholder="璇疯緭鍏ュ惊鐜懆鏈� 0姣忓ぉ 1姣忓懆 2姣忓ぉ" v-trim/> - </el-form-item> - <el-form-item label="寰幆閲嶅瑙勫垯 1-31锛屽涓嫳鏂囬�楀彿闅斿紑" prop="circleDays"> - <el-input v-model="form.circleDays" placeholder="璇疯緭鍏ュ惊鐜噸澶嶈鍒� 1-31锛屽涓嫳鏂囬�楀彿闅斿紑" v-trim/> - </el-form-item> - <el-form-item label="寮�濮嬫棩鏈�" prop="startDate"> - <el-date-picker v-model="form.startDate" value-format="yyyy-MM-dd" placeholder="璇疯緭鍏ュ紑濮嬫棩鏈�"></el-date-picker> - </el-form-item> - <el-form-item label="缁撴潫鏃ユ湡" prop="endDate"> - <el-date-picker v-model="form.endDate" value-format="yyyy-MM-dd" placeholder="璇疯緭鍏ョ粨鏉熸棩鏈�"></el-date-picker> - </el-form-item> - <el-form-item label="寮�濮嬫椂闂寸偣" prop="startTime"> - <el-input v-model="form.startTime" placeholder="璇疯緭鍏ュ紑濮嬫椂闂寸偣" v-trim/> - </el-form-item> - <el-form-item label="缁撴潫鏃堕棿鐐�" prop="endTime"> - <el-input v-model="form.endTime" placeholder="璇疯緭鍏ョ粨鏉熸椂闂寸偣" v-trim/> - </el-form-item> - <el-form-item label="鎵ц杩涘害 0寰呭紑濮� 1杩涜涓� 2瓒呮湡 3宸插畬鎴�" prop="processStatus"> - <el-input v-model="form.processStatus" placeholder="璇疯緭鍏ユ墽琛岃繘搴� 0寰呭紑濮� 1杩涜涓� 2瓒呮湡 3宸插畬鎴�" v-trim/> - </el-form-item> + </el-form> </GlobalWindow> </template> @@ -76,11 +54,14 @@ <script> import BaseOpera from '@/components/base/BaseOpera' import GlobalWindow from '@/components/common/GlobalWindow' +import { fetchList as getLineList } from '@/api/Inspection/ywPatrolLine' +import { detailById } from '@/api/Inspection/ywPatrolScheme' +import { getUserList } from '@/api/system/user' export default { name: 'OperaYwPatrolSchemeWindow', extends: BaseOpera, components: { GlobalWindow }, - data () { + data() { return { // 琛ㄥ崟鏁版嵁 form: { @@ -95,28 +76,217 @@ status: '', sortnum: '', lineId: '', - userIds: '', + userIds: [], dealUserId: '', dealDate: '', dealInfo: '', - circleType: '', + circleType: 0, circleDays: '', startDate: '', endDate: '', startTime: '', endTime: '', - processStatus: '' + processStatus: '', + selDate: [], }, - // 楠岃瘉瑙勫垯 + lineList: [], + staffList: [], + weeks: [ + { la: '鍛ㄤ竴', va: 1, sel: false }, + { la: '鍛ㄤ簩', va: 2, sel: false }, + { la: '鍛ㄤ笁', va: 3, sel: false }, + { la: '鍛ㄥ洓', va: 4, sel: false }, + { la: '鍛ㄤ簲', va: 5, sel: false }, + { la: '鍛ㄥ叚', va: 6, sel: false }, + { la: '鍛ㄦ棩', va: 7, sel: false }, + ], + monthsList: [], + selCircleDays: [], rules: { + title: [{ required: true, message: '璇疯緭鍏�' }], + lineId: [{ required: true, message: '璇烽�夋嫨' }], + userIds: [{ required: true, message: '璇烽�夋嫨' }], + selDate: [{ type: 'array', required: true, message: '璇烽�夋嫨' }], + circleDays: [{ required: true, message: '璇烽�夋嫨' }], } } }, - created () { + created() { this.config({ api: '/Inspection/ywPatrolScheme', 'field.id': 'id' }) + }, + methods: { + open(title) { + this.title = title + this.visible = true + }, + __confirmCreate () { + this.$refs.form.validate((valid) => { + if (!valid) { + return + } + let obj = JSON.parse(JSON.stringify(this.form)) + obj.userIds = obj.userIds.join(',') + // 璋冪敤鏂板缓鎺ュ彛 + this.isWorking = true + this.api.create(obj) + .then(() => { + this.visible = false + this.$tip.apiSuccess('鏂板缓鎴愬姛') + this.$emit('success') + }) + .catch(e => { + // this.$tip.apiFailed(e) + }) + .finally(() => { + this.isWorking = false + }) + }) + }, + __confirmEdit () { + this.$refs.form.validate((valid) => { + if (!valid) { + return + } + let obj = JSON.parse(JSON.stringify(this.form)) + obj.userIds = obj.userIds.join(',') + // 璋冪敤鏂板缓鎺ュ彛 + this.isWorking = true + this.api.updateById(obj) + .then(() => { + this.visible = false + this.$tip.apiSuccess('淇敼鎴愬姛') + this.$emit('success') + }) + .catch(e => { + // this.$tip.apiFailed(e) + }) + .finally(() => { + this.isWorking = false + }) + }) + }, + weekClick(i) { + this.weeks.forEach((item, index) => { + if (i == index) { item.sel = !item.sel } + }) + this.$set(this.form, 'circleDays', this.weeks.filter(j => j.sel).map(a => a.va).join(',')) + }, + monthClick(i) { + this.monthsList.forEach((item, index) => { + if (i == index) { item.sel = !item.sel } + }) + this.$set(this.form, 'circleDays', this.monthsList.filter(j => j.sel).map(a => a.va).join(',')) + }, + changeTime(e) { + if (e && e.length > 0) { + this.$set(this.form, 'startTime', e[0]) + this.$set(this.form, 'endTime', e[1]) + } else { + this.$set(this.form, 'startTime', '') + this.$set(this.form, 'endTime', '') + } + }, + changeDate(e) { + if (e && e.length > 0) { + this.$set(this.form, 'startDate', e[0]) + this.$set(this.form, 'endDate', e[1]) + } else { + this.$set(this.form, 'startDate', '') + this.$set(this.form, 'endDate', '') + } + }, + changeType() { + this.$set(this.form, 'circleDays', '') + }, + getDetail(id) { + detailById(id).then(res => { + this.form = res + if (res.userIds) { + this.$set(this.form, 'userIds', [...res.userIds.split(',').map(item => Number(item))]) + } + if (res.startTime) { + this.$set(this.form, 'selTime', [res.startTime, res.endTime]) + } + if (res.circleDays) { + const circleDays = res.circleDays.split(',') + if (res.circleType == 1) { + circleDays.forEach(i => { + this.weeks.forEach(j => { + if (i == j.va) { + j.sel = true + } + }) + }) + } else { + setTimeout(() => { + circleDays.forEach(i => { + this.monthsList.forEach(j => { + if (i == j.va) { + j.sel = true + } + }) + }) + }, 500) + } + } + this.$set(this.form, 'selDate', [res.startDate, res.endDate]) + }) + }, + initData() { + getLineList({ + model: {}, + capacity: 9999, + page: 1, + }).then(res => { + this.lineList = res.records + }) + getUserList({}).then(res => { + this.staffList = res + }) + this.monthsList = [] + for (let i = 1; i < 32; i++) { + this.monthsList.push({ la: i, va: i, sel: false }) + } + }, + close() { + this.$refs.form.resetFields() + this.visible = false + } } + } </script> +<style lang="scss" scoped> +@import '@/assets/style/variables.scss'; +.warnning{ + padding: 6px 10px; + background-color: #fcf3e6; + font-size: 12px; + color: #333333; +} +.weeks { + display: flex; + align-items: center; + flex-wrap: wrap; + + .week { + border: 1px solid #999999; + width: 40px; + height: 18px; + text-align: center; + line-height: 18px; + font-size: 12px; + margin-right: 8px; + cursor: pointer; + margin-bottom: 6px; + } + + .active { + color: $primary-color; + border: 1px solid $primary-color; + } +} +</style> -- Gitblit v1.9.3