| | |
| | | export function SmsStatusUpdate (data) { |
| | | return request.post('/visitsAdmin/cloudService/business/smsConfig/updateById', data) |
| | | } |
| | | // 短信通知 批量状态更新 |
| | | export function SmsStatussUpdate (data) { |
| | | return request.get('/visitsAdmin/cloudService/business/smsConfig/updateStatus/batch', { |
| | | params: { |
| | | ...data |
| | | } |
| | | }) |
| | | } |
| | |
| | | <div class="doumee-filter"> |
| | | <el-form inline label-suffix=":" @submit.native.prevent> |
| | | <template v-for="(item, index) in queryFormConfig.formItems"> |
| | | <el-form-item v-if="item.type === 'input' && (showZk || index < listLength)" :key="item.filed" |
| | | :label="item.label"> |
| | | <el-form-item v-if="item.type === 'input' && (showZk || index < listLength)" :key="item.filed"> |
| | | <el-input v-model="searchForm[item.filed]" |
| | | :clearable="(item.clearable !== null && item.clearable !== undefined && item.clearable !== '') ? item.clearable : true" |
| | | :placeholder="item.placeholder ? item.placeholder : '请输入' + item.label" class="w200" |
| | | :placeholder="item.label" class="w200" |
| | | @change="changeForm(item.filed)" @keyup.enter.native="handlekeyup(item.keyup || false)" /> |
| | | </el-form-item> |
| | | <el-form-item v-if="item.type === 'moneySelect' && (showZk || index < listLength)" :key="item.label" |
| | | :label="item.label"> |
| | | <el-form-item v-if="item.type === 'moneySelect' && (showZk || index < listLength)" :key="item.label"> |
| | | <el-input v-model="searchForm[item.filedStrt]" |
| | | :clearable="(item.clearable !== null && item.clearable !== undefined && item.clearable !== '') ? item.clearable : true" |
| | | :placeholder="item.start" style="width: 150px" /> |
| | |
| | | :clearable="(item.clearable !== null && item.clearable !== undefined && item.clearable !== '') ? item.clearable : true" |
| | | :placeholder="item.end" style="width: 150px" /> |
| | | </el-form-item> |
| | | <el-form-item v-if="item.type === 'select' && (showZk || index < listLength)" :key="item.filed" |
| | | :label="item.label"> |
| | | <el-form-item v-if="item.type === 'select' && (showZk || index < listLength)" :key="item.filed"> |
| | | <el-select v-model="searchForm[item.filed]" :filterable="item.filterable || true" |
| | | :clearable="(item.clearable !== null && item.clearable !== undefined && item.clearable !== '') ? item.clearable : true" |
| | | :placeholder="item.placeholder ? item.placeholder : '请选择' + item.label" class="w200" |
| | | :placeholder="item.label" class="w200" |
| | | @change="changeForm(item.filed)"> |
| | | <el-option v-for="opt, i in item.options" :key="i" :value="item.valueCode ? opt[item.valueCode] : opt.value" |
| | | :label="item.labelCode ? opt[item.labelCode] : opt.label" /> |
| | | </el-select> |
| | | </el-form-item> |
| | | <el-form-item v-if="item.type === 'date' && (showZk || index < listLength)" :key="item.filed" |
| | | :label="item.label || '日期'"> |
| | | <el-form-item v-if="item.type === 'date' && (showZk || index < listLength)" :key="item.filed"> |
| | | <el-date-picker v-model="searchForm[item.filed]" type="date" value-format="yyyy-MM-dd" class="w200" |
| | | :clearable="(item.clearable !== null && item.clearable !== undefined && item.clearable !== '') ? item.clearable : true" |
| | | :placeholder="item.placeholder || '请选择日期'" :picker-options="item.pickerOptions || {}" |
| | | :placeholder="item.label" :picker-options="item.pickerOptions || {}" |
| | | @change="changeForm(item.filed)" /> |
| | | </el-form-item> |
| | | <el-form-item v-if="item.type === 'daterange' && (showZk || index < listLength)" :key="item.filed" |
| | | :label="item.label || ''"> |
| | | <el-form-item v-if="item.type === 'daterange' && (showZk || index < listLength)" :key="item.filed"> |
| | | <el-date-picker v-model="searchForm[item.filed]" value-format="yyyy-MM-dd" type="daterange" |
| | | range-separator="至" |
| | | :clearable="(item.clearable !== null && item.clearable !== undefined && item.clearable !== '') ? item.clearable : true" |
| | | :start-placeholder="item.start || ''" :end-placeholder="item.end || ''" |
| | | :picker-options="item.pickerOptions || {}" class="w400" @change="changeForm(item.filed)" /> |
| | | </el-form-item> |
| | | <el-form-item v-if="item.type === 'timePicker' && (showZk || index < listLength)" :key="item.filed" |
| | | :label="item.label || '选择时间'"> |
| | | <el-form-item v-if="item.type === 'timePicker' && (showZk || index < listLength)" :key="item.filed"> |
| | | <el-time-picker v-model="searchForm[item.filed]" is-range range-separator="至" format="HH:mm" |
| | | value-format="HH:mm" start-placeholder="开始时间" end-placeholder="结束时间" placeholder="选择时间范围" class="w400" |
| | | @change="changeForm(item.filed)" /> |
| | | </el-form-item> |
| | | <el-form-item v-if="item.type === 'datetimerange' && (showZk || index < listLength)" :key="item.filed" |
| | | :label="item.label || '选择日期'"> |
| | | <el-form-item v-if="item.type === 'datetimerange' && (showZk || index < listLength)" :key="item.filed"> |
| | | <el-date-picker v-model="searchForm[item.filed]" format="yyyy-MM-dd HH:mm:ss" |
| | | value-format="yyyy-MM-dd HH:mm:ss" type="datetimerange" |
| | | :default-time="['00:00:00', '23:59:59']" |
| | | value-format="yyyy-MM-dd HH:mm:ss" type="datetimerange" :default-time="['00:00:00', '23:59:59']" |
| | | :picker-options="item.pickerOptions || pickerOptions" range-separator="至" |
| | | :clearable="(item.clearable !== null && item.clearable !== undefined && item.clearable !== '') ? item.clearable : true" |
| | | :start-placeholder="item.start || '开始时间'" :end-placeholder="item.end || '结束时间'" class="w400" |
| | | @change="changeForm(item.filed)" /> |
| | | </el-form-item> |
| | | <el-form-item v-if="item.type === 'slot' && (showZk || index < listLength)" :key="item.filed" |
| | | :label="item.label"> |
| | | <el-form-item v-if="item.type === 'slot' && (showZk || index < listLength)" :key="item.filed"> |
| | | <slot :name="item.filed" /> |
| | | </el-form-item> |
| | | </template> |
| | |
| | | default: () => { } |
| | | } |
| | | }, |
| | | data () { |
| | | data() { |
| | | return { |
| | | showZk: false, |
| | | pickerOptions: { |
| | | shortcuts: [{ |
| | | text: '近7天', |
| | | onClick (picker) { |
| | | onClick(picker) { |
| | | const end = new Date() |
| | | const start = new Date() |
| | | start.setTime(end.getTime() - 3600 * 1000 * 24 * 6) |
| | |
| | | }, |
| | | { |
| | | text: '近30天', |
| | | onClick (picker) { |
| | | onClick(picker) { |
| | | const end = new Date() |
| | | const start = new Date() |
| | | start.setTime(end.getTime() - 3600 * 1000 * 24 * 29) |
| | |
| | | }, |
| | | { |
| | | text: '近60天', |
| | | onClick (picker) { |
| | | onClick(picker) { |
| | | const end = new Date() |
| | | const start = new Date() |
| | | start.setTime(end.getTime() - 3600 * 1000 * 24 * 59) |
| | |
| | | }, |
| | | { |
| | | text: '近90天', |
| | | onClick (picker) { |
| | | onClick(picker) { |
| | | const end = new Date() |
| | | const start = new Date() |
| | | start.setTime(end.getTime() - 3600 * 1000 * 24 * 89) |
| | | picker.$emit('pick', [start, end]) |
| | | } |
| | | }], |
| | | disabledDate (time) { |
| | | disabledDate(time) { |
| | | var curDate = new Date(new Date().toLocaleDateString()).getTime() |
| | | var preDate = new Date(curDate + 24 * 60 * 60 * 1000 - 1) |
| | | return time.getTime() > preDate |
| | |
| | | emits: ['input', 'handleQuery', 'clear'], |
| | | computed: { |
| | | searchForm: { |
| | | get () { |
| | | get() { |
| | | return this.value |
| | | }, |
| | | set (value) { |
| | | set(value) { |
| | | this.$emit('input', value) |
| | | } |
| | | } |
| | | }, |
| | | methods: { |
| | | handleQuery () { |
| | | handleQuery() { |
| | | this.$emit('handleQuery') |
| | | }, |
| | | handlekeyup (pd) { |
| | | handlekeyup(pd) { |
| | | if (pd) { |
| | | this.$emit('handleQuery') |
| | | } |
| | | }, |
| | | changeForm (filed) { |
| | | changeForm(filed) { |
| | | this.$emit('changeForm', filed) |
| | | }, |
| | | zkBtn () { |
| | | zkBtn() { |
| | | this.showZk = !this.showZk |
| | | this.$emit('zkBtn', this.zk) |
| | | }, |
| | | clear () { |
| | | clear() { |
| | | this.$emit('clear') |
| | | } |
| | | } |
| | |
| | | <template> |
| | | <div :style="styleEditor"> |
| | | <Toolbar style="border-bottom: 1px solid #ccc" :editor="editor" :defaultConfig="toolbarConfig" :mode="mode" /> |
| | | <Editor style="height: 300px; overflow-y: hidden;" v-model="html" :defaultConfig="editorConfig" :mode="mode" |
| | | <Editor style="max-height: 300px;min-height: 100px; overflow-y: hidden;" v-model="html" :defaultConfig="editorConfig" :mode="mode" |
| | | @onCreated="onCreated" @onChange="onChange" /> |
| | | </div> |
| | | </template> |
| | |
| | | import Vue from 'vue' |
| | | import { Editor, Toolbar } from '@wangeditor/editor-for-vue' |
| | | import { Loading } from 'element-ui'; |
| | | let loadingInstance = null |
| | | export default Vue.extend({ |
| | | props: { |
| | | richData: { // 父组件传递的数据 |
| | |
| | | timeout: 10 * 1000, //10 秒 |
| | | // 上传前 |
| | | onBeforeUpload(files) { |
| | | Loading.service({ |
| | | loadingInstance = Loading.service({ |
| | | lock: true, |
| | | text: '上传中...', |
| | | spinner: 'el-icon-loading', |
| | |
| | | console.log(res); |
| | | // 因为自定义插入导致onSuccess与onFailed回调函数不起作用,自己手动处理 |
| | | // 先关闭等待的Message |
| | | Loading.service({ |
| | | loadingInstance = Loading.service({ |
| | | lock: true, |
| | | text: '上传中...', |
| | | spinner: 'el-icon-loading', |
| | |
| | | // 单个文件上传失败 |
| | | onFailed(file, res) { |
| | | console.log(`${file.originalFilename} 上传失败`, res); |
| | | loadingInstance.close(); |
| | | }, |
| | | // 上传进度的回调函数 |
| | | onProgress(progress) { |
| | |
| | | }, |
| | | // 上传错误,或者触发 timeout 超时 |
| | | onError(file, err, res) { |
| | | loadingInstance.close(); |
| | | console.log(`${file.originalFilename} 上传出错`, err, res); |
| | | } |
| | | }, |
| | |
| | | <li><el-button type="danger" @click="deleteByIdInBatch" icon="el-icon-delete" |
| | | v-permissions="['business:member:delete']">批量删除</el-button></li> |
| | | <li><el-button type="primary" v-permissions="['business:empower:create']" @click="startEmpowerBatch()" |
| | | icon="el-icon-plus">下发授权</el-button></li> |
| | | >下发授权</el-button></li> |
| | | <li style="float: right"> |
| | | <el-checkbox style="font-size: 12px" label="1" v-model="searchForm.includeChild" key="1" |
| | | @change="search">是否包含下级组织</el-checkbox> |
| | |
| | | icon="el-icon-plus" v-permissions="['business:traintime:create']">培训期导入</el-button></li> |
| | | <li><el-button type="danger" @click="deleteByIdInBatch" icon="el-icon-delete" |
| | | v-permissions="['business:member:delete']">批量删除</el-button></li> |
| | | <li><el-button type="primary" v-permissions="['business:empower:create']" @click="startEmpowerBatch()" |
| | | icon="el-icon-plus">下发授权</el-button></li> |
| | | <li><el-button type="primary" v-permissions="['business:empower:create']" @click="startEmpowerBatch()">下发授权</el-button></li> |
| | | <li><el-button type="primary" v-permissions="['business:empower:exportExcel']" @click="exportExcel">导出</el-button></li> |
| | | </ul> |
| | | <el-table v-loading="isWorking.search" :data="tableData.list" stripe @selection-change="handleSelectionChange"> |
| | | <el-table-column type="selection" width="55"></el-table-column> |
| | |
| | | <el-table-column label="卡片" min-width="80px"> |
| | | <template slot-scope="{row}"> |
| | | <el-button @click="$refs.cardOpeningRecord.open('开卡记录', row.id)" type="text">{{ row.memberCardCount || |
| | | '0'}}</el-button> |
| | | '0' }}</el-button> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column prop="editorName" label="操作人" min-width="100px"></el-table-column> |
| | |
| | | |
| | | <style lang="scss" scoped> |
| | | @import '@/assets/style/variables.scss'; |
| | | |
| | | .box { |
| | | width: 100%; |
| | | display: flex; |
| | |
| | | height: 100%; |
| | | } |
| | | } |
| | | |
| | | .zhuguan { |
| | | color: $primary-color; |
| | | border: 1px solid $primary-color; |
| | |
| | | /> |
| | | </el-form-item> |
| | | <el-form-item label="在园须知:" prop="visitNotice"> |
| | | <el-tiptap |
| | | <!-- <el-tiptap |
| | | style="width: 50%" |
| | | v-model="form.visitNotice" |
| | | :extensions="extensions" |
| | | /> |
| | | /> --> |
| | | <RichEditor style="width: 70%" :richData="form.visitNotice" :styleEditor="styleEditor" @getWangedditor="getWangedditor" :readonly="false"/> |
| | | </el-form-item> |
| | | <el-form-item label="访客预约指南:" prop="visitNotice"> |
| | | <el-tiptap |
| | | <!-- <el-tiptap |
| | | style="width: 50%" |
| | | v-model="form.visitTips" |
| | | :extensions="extensions" |
| | | /> |
| | | /> --> |
| | | <RichEditor style="width: 70%" :richData="form.visitTips" :styleEditor="styleEditor" @getWangedditor="getWangedditor1" :readonly="false"/> |
| | | </el-form-item> |
| | | <el-form-item label="访客入园导览图:" prop="visitNotice"> |
| | | <el-tiptap |
| | | <!-- <el-tiptap |
| | | style="width: 50%" |
| | | v-model="form.visitMap" |
| | | :extensions="extensions" |
| | | /> |
| | | /> --> |
| | | <RichEditor style="width: 70%" :richData="form.visitMap" :styleEditor="styleEditor" @getWangedditor="getWangedditor2" :readonly="false"/> |
| | | </el-form-item> |
| | | <el-form-item> |
| | | <el-button type="primary" @click="submit">保存配置项</el-button> |
| | |
| | | |
| | | <script> |
| | | import { getVisitConfigDTO, updateVisitConfig } from '@/api/system/common' |
| | | import RichEditor from '@/components/common/RichEditor' |
| | | import { |
| | | // necessary extensions |
| | | Doc, |
| | |
| | | import { upload } from '@/api/system/common' |
| | | export default { |
| | | name: 'visitorSources', |
| | | |
| | | components: { |
| | | RichEditor |
| | | }, |
| | | data() { |
| | | return { |
| | | form: { |
| | |
| | | visitTips: '', |
| | | frezzDays: null |
| | | }, |
| | | styleEditor:'border: 1px solid #ccc;display: inline-block;', |
| | | extensions: [ |
| | | new Doc(), |
| | | new Text(), |
| | |
| | | }, |
| | | |
| | | methods: { |
| | | getWangedditor(val){ |
| | | this.form.visitNotice =val |
| | | }, |
| | | getWangedditor1(val){ |
| | | this.form.visitTips =val |
| | | }, |
| | | getWangedditor2(val){ |
| | | this.form.visitMap =val |
| | | }, |
| | | getData() { |
| | | getVisitConfigDTO({}) |
| | | .then(res => { |
| | |
| | | label: '驾驶员' |
| | | }, |
| | | { |
| | | filed: 'queryStatusForPower', |
| | | type: 'select', |
| | | label: '授权状态', |
| | | options: [ |
| | | { value: '9,10', label: '已授权' }, |
| | | { value: '6', label: '未授权' } |
| | | ] |
| | | }, |
| | | { |
| | | filed: 'selDate', |
| | | type: 'datetimerange', |
| | | label: '作业完成时间搜索', |
| | |
| | | label: '合同单号' |
| | | }, |
| | | { |
| | | filed: 'status', |
| | | type: 'select', |
| | | label: '审批结果', |
| | | options: [ |
| | | { value: 0, label: '待审批' }, |
| | | { value: 1, label: '审批中' }, |
| | | { value: 2, label: '审批通过' }, |
| | | { value: 3, label: '审批驳回' }, |
| | | { value: 4, label: '已取消' }, |
| | | ] |
| | | }, |
| | | { |
| | | filed: 'selDate', |
| | | type: 'datetimerange', |
| | | label: '操作时间', |
| | |
| | | selDate: [], |
| | | fastdate: 0, |
| | | } |
| | | this.getList() |
| | | this.changeRadio('0') |
| | | }, |
| | | handleDetail(row) { |
| | | this.isShowDriver = true |
| | |
| | | label: '车牌号' |
| | | }, |
| | | { |
| | | filed: 'status', |
| | | type: 'select', |
| | | label: '作业状态', |
| | | options: [ |
| | | { value: 3, label: '入园等待' }, |
| | | { value: 4, label: '月台等待' }, |
| | | { value: 5, label: '作业中' }, |
| | | { value: 6, label: '作业完成' }, |
| | | { value: 7, label: '转移中' }, |
| | | { value: 8, label: '异常挂起' }, |
| | | { value: 9, label: '已授权离园' }, |
| | | { value: 10, label: '已离园' }, |
| | | { value: 11, label: '已过号' }, |
| | | { value: 12, label: '已取消' }, |
| | | ] |
| | | }, |
| | | { |
| | | filed: 'selDate', |
| | | type: 'datetimerange', |
| | | label: '操作时间', |
| | |
| | | <template> |
| | | <div class="main_app"> |
| | | <QueryForm v-model="filters" :query-form-config="queryFormConfig" @handleQuery="getList(1)" |
| | | @clear="clear"> |
| | | <QueryForm v-model="filters" :query-form-config="queryFormConfig" @handleQuery="getList(1)" @clear="clear"> |
| | | </QueryForm> |
| | | <!-- <div class="pt16"> |
| | | <el-button :loading="exLoading" @click="handleEx" |
| | | v-permissions="['business:platformjob:exportExcel']">导出</el-button> |
| | | </div> --> |
| | | <el-table class="mb20" v-loading="loading" :data="list" stripe> |
| | | <div class="pt16 mb10"> |
| | | <el-button type="primary" @click="batchStatus(0)" |
| | | v-permissions="['business:platformjob:update']">批量启用</el-button> |
| | | <el-button @click="batchStatus(1)" v-permissions="['business:platformjob:update']">批量禁用</el-button> |
| | | </div> |
| | | <el-table @selection-change="handleSelectionChange" class="mb20" v-loading="loading" :data="list" stripe> |
| | | <el-table-column align="center" type="selection" width="55"> |
| | | </el-table-column> |
| | | <el-table-column prop="name" label="消息标题" min-width="160" show-overflow-tooltip /> |
| | | <el-table-column prop="code" label="消息编码" min-width="150" show-overflow-tooltip /> |
| | | <el-table-column prop="content" label="消息模板" min-width="300" show-overflow-tooltip /> |
| | | <el-table-column label="状态" width="120" align="center" fixed="right"> |
| | | <template v-slot="scope"> |
| | | <el-switch v-model="scope.row.status" @change="changeStatus(scope.row)" :active-value="0" :inactive-value="1"> |
| | | </el-switch> |
| | | <el-switch v-permissions="['business:platformjob:update']" v-model="scope.row.status" @change="changeStatus(scope.row)" :active-value="0" :inactive-value="1"> |
| | | </el-switch> |
| | | </template> |
| | | </el-table-column> |
| | | </el-table> |
| | |
| | | <script> |
| | | import Pagination from '@/components/common/Pagination' |
| | | import QueryForm from '@/components/common/QueryForm' |
| | | import { getSmsList, SmsStatusUpdate } from '@/api/system/sms' |
| | | import { getSmsList, SmsStatusUpdate, SmsStatussUpdate } from '@/api/system/sms' |
| | | |
| | | import GlobalWindow from '@/components/common/GlobalWindow' |
| | | import { Message } from 'element-ui' |
| | |
| | | }, |
| | | data() { |
| | | return { |
| | | ids: [], |
| | | isShowDetail: false, |
| | | exLoading: false, |
| | | loading: false, |
| | |
| | | this.getList() |
| | | }, |
| | | methods: { |
| | | handleSelectionChange(val) { |
| | | this.ids = val.map(i => i.id) |
| | | console.log('ids', this.ids) |
| | | }, |
| | | batchStatus(status) { |
| | | const { ids } = this |
| | | if (ids.length == 0) return Message.error('请先选择要更改的短信通知') |
| | | this.$confirm(`确定${status == 0 ? '启用' : '禁用'}选中的所有短信通知吗?`, '提示', { |
| | | confirmButtonText: '确定', |
| | | cancelButtonText: '取消', |
| | | type: 'warning' |
| | | }).then(() => { |
| | | SmsStatussUpdate({ |
| | | ids: ids.join(','), |
| | | status |
| | | }).then(res => { |
| | | Message.success('批量更新成功') |
| | | this.getList() |
| | | }, () => { |
| | | this.getList() |
| | | }) |
| | | }) |
| | | |
| | | }, |
| | | changeStatus(row) { |
| | | console.log('row', row); |
| | | console.log('row', row) |
| | | SmsStatusUpdate({ |
| | | ...row |
| | | }).then(res => { |
| | |
| | | this.loading = false |
| | | }) |
| | | }, |
| | | |
| | | |
| | | |
| | | |
| | | clear() { |
| | | this.pagination.page = 1 |
| | | this.filters = {} |
| | |
| | | </view> |
| | | </view> |
| | | <view class="emyty"></view> |
| | | <view class="main_footer"> |
| | | <view v-if=" |
| | | info.approveDateVO != null && |
| | | info.approveDateVO.canBeApproved != null && |
| | | info.approveDateVO.canBeApproved == 1 |
| | | " class="main_footer"> |
| | | <view class="btn" @click="handleSub('0')">拒绝</view> |
| | | <view class="btn agree" @click="handleSub('1')">同意</view> |
| | | </view> |
| | |
| | | "proxy": {
|
| | | "/gateway_interface": {
|
| | | // 这个字段名需与你配置的basePrefixUrl一致,系统识别到带有/dev-api请求的地址时,会在前面拼接上代理服务器地址
|
| | | "target" : "http://10.50.250.178:8088/gateway_interface", // 代理服务器域名或IP地址
|
| | | "target" : "http://10.50.250.253:8088/gateway_interface", // 代理服务器域名或IP地址
|
| | | // "target": "http://192.168.0.100:10010", // 代理服务器域名或IP地址
|
| | | "changeOrigin": true, // 允许跨域
|
| | | "pathRewrite": {
|
| | |
| | | }, |
| | | getPlatformGroup() { |
| | | getPlatformGroupList({ |
| | | queryData: 1, |
| | | queryData: 0, |
| | | queryType: 0 |
| | | }).then(res => { |
| | | this.platformGroupList = res.data || [] |
| | |
| | | |
| | | export const baseUrl = 'gateway_interface/' |
| | | // export const baseUrl = 'http://10.50.250.178:8088/gateway_interface/' |
| | | // export const baseUrl = 'gateway_interface/' |
| | | export const baseUrl = 'http://10.50.250.253:8088/gateway_interface/' |
| | | export const uploadAvatar = `${baseUrl}visitsAdmin/cloudService/web/public/uploadFtp.do` |
| | | export const uploadUrl = `${baseUrl}visitsAdmin/cloudService/public/uploadBatch` |
| | | |
| | |
| | | }else{ |
| | | item.optTimeTemp = '-' |
| | | } |
| | | |
| | | } |
| | | // item.optTimeTemp = dayjs.duration(Math.abs(new Date().getTime() - item.optTime)).format('HH:mm') |
| | | } |