| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483 |
- <template>
- <div>
- <el-row :gutter="24" v-if="pageType">
- <el-col :span="4">
- <el-input
- @input="
- (value) =>
- (formData.frequencyValue = value.replace(/^(0+)|[^\d]+/g, ''))
- "
- class="cycle_value"
- size="small"
- v-model.number="formData.frequencyValue"
- @change="cycleValueChange"
- placeholder="请输入"
- :disabled="isBindPlan"
- maxlength="3"
- ></el-input>
- </el-col>
- <el-col :span="4">
- <el-select
- v-model="formData.frequencyUnit"
- size="small"
- @change="handleCycleTypeChange"
- :disabled="isBindPlan"
- >
- <el-option
- v-for="item in cycleOpt"
- :key="item.code"
- :label="item.label"
- :value="item.code"
- ></el-option>
- </el-select>
- </el-col>
- <el-col :span="8" v-if="[1, 2, 4, 5].includes(formData.frequencyUnit)">
- <div
- v-for="(item, index) in recordRulesCycleList"
- :key="index"
- class="cycle01_box"
- >
- <el-input
- v-model.number="item.month"
- size="small"
- oninput="value = value.replace(/^(0+)|[^\d]+/g,'')"
- @input="(e) => inputMonth(e, index)"
- v-if="[5].includes(formData.frequencyUnit)"
- :disabled="isBindPlan"
- >
- <template #suffix>月</template>
- </el-input>
- <el-input
- v-model.number="item.day"
- size="small"
- oninput="value = value.replace(/^(0+)|[^\d]+/g,'')"
- @input="(e) => inputDay(e, index)"
- v-if="[4, 5].includes(formData.frequencyUnit)"
- :disabled="isBindPlan"
- >
- <template #suffix>日</template>
- </el-input>
- <el-input
- v-model.number="item.hour"
- size="small"
- oninput="value = value.replace(/^0+(\d)|[^\d]+/g,'')"
- @input="(e) => inputHour(e, index)"
- v-if="[2, 4, 5].includes(formData.frequencyUnit)"
- :disabled="isBindPlan"
- >
- <template #suffix>时</template>
- </el-input>
- <el-input
- v-model.number="item.minute"
- size="small"
- oninput="value = value.replace(/^0+(\d)|[^\d]+/g,'')"
- @input="(e) => inputMinute(e, index)"
- :disabled="isBindPlan"
- >
- <template #suffix>分</template>
- </el-input>
- </div>
- </el-col>
- </el-row>
- <el-row v-else>
- <el-col :span="24" class="cycle_time_column">
- <span style="margin-right: 20px"
- >{{ formData.frequencyValue
- }}{{ cycleOptObj[formData.frequencyUnit] }}</span
- >
- <div v-if="[1, 2, 4, 5].includes(formData.frequencyUnit)">
- <span v-if="[5].includes(formData.frequencyUnit)"
- >{{ recordRulesCycleList[0].month }}月</span
- >
- <span v-if="[4, 5].includes(formData.frequencyUnit)"
- >{{ recordRulesCycleList[0].day }}日</span
- >
- <span v-if="[2, 4, 5].includes(formData.frequencyUnit)"
- >{{ recordRulesCycleList[0].hour }}时</span
- >
- <span>{{ recordRulesCycleList[0].minute }}分</span>
- </div>
- </el-col>
- </el-row>
- <!-- 根据周期类型展示时间组件 11,12,13,14 -->
- <div>
- <!-- 次/天 -->
- <el-row :gutter="20" v-if="formData.frequencyUnit === 11">
- <el-col
- v-for="(item, index) in recordRulesCycleList"
- :key="index"
- :span="6"
- class="cycle_item"
- >
- <span>第{{ index + 1 }}次</span>
- <div class="cycle_sub_item" v-if="pageType">
- <el-input
- v-model.number="item.hour"
- size="small"
- placeholder="时"
- oninput="value = value.replace(/^0+(\d)|[^\d]+/g,'')"
- @input="(e) => inputHour(e, index)"
- :disabled="isBindPlan"
- >
- <template #suffix>时</template>
- </el-input>
- </div>
- <div v-else>{{ item.hour }}时</div>
- <div class="cycle_sub_item" v-if="pageType">
- <el-input
- v-model.number="item.minute"
- size="small"
- oninput="value = value.replace(/^0+(\d)|[^\d]+/g,'')"
- @input="(e) => inputMinute(e, index)"
- placeholder="分"
- :disabled="isBindPlan"
- >
- <template #suffix>分</template>
- </el-input>
- </div>
- <div v-else>
- {{ item.minute > 9 ? item.minute : '0' + item.minute }}分
- </div>
- </el-col>
- </el-row>
- <!-- 次/周 -->
- <el-row :gutter="20" v-else-if="formData.frequencyUnit === 12">
- <el-col
- v-for="(item, index) in recordRulesCycleList"
- :key="index"
- :span="6"
- class="cycle_item"
- >
- <span>第{{ index + 1 }}次</span>
- <div class="cycle_sub_item" v-if="pageType">
- <el-select
- v-model.number="item.week"
- size="small"
- placeholder="周"
- :disabled="isBindPlan"
- >
- <el-option
- v-for="item in weekList"
- :key="item.value"
- :value="item.value"
- :label="item.label"
- ></el-option> </el-select
- >周
- </div>
- <div v-else>{{ item.week }}</div>
- <div class="cycle_sub_item" v-if="pageType">
- <el-input
- v-model.number="item.hour"
- size="small"
- placeholder="时"
- oninput="value = value.replace(/^0+(\d)|[^\d]+/g,'')"
- @input="(e) => inputHour(e, index)"
- :disabled="isBindPlan"
- >
- <template #suffix>时</template>
- </el-input>
- </div>
- <div v-else>{{ item.hour }}时</div>
- </el-col>
- </el-row>
- <!-- 次/月 -->
- <el-row :gutter="20" v-else-if="formData.frequencyUnit === 13">
- <el-col
- v-for="(item, index) in recordRulesCycleList"
- :key="index"
- :span="6"
- class="cycle_item"
- >
- <span>第{{ index + 1 }}次</span>
- <div class="cycle_sub_item" v-if="pageType">
- <el-input
- v-model.number="item.day"
- size="small"
- placeholder="日"
- oninput="value = value.replace(/^(0+)|[^\d]+/g,'')"
- @input="(e) => inputDay(e, index)"
- :disabled="isBindPlan"
- >
- <template #suffix>日</template>
- </el-input>
- </div>
- <div v-else>{{ item.day }}日</div>
- <div class="cycle_sub_item" v-if="pageType">
- <el-input
- v-model.number="item.hour"
- size="small"
- placeholder="时"
- oninput="value = value.replace(/^0+(\d)|[^\d]+/g,'')"
- @input="(e) => inputHour(e, index)"
- :disabled="isBindPlan"
- >
- <template #suffix>时</template>
- </el-input>
- </div>
- <div v-else>{{ item.hour }}</div>
- </el-col>
- </el-row>
- <!-- 次/年 -->
- <el-row :gutter="20" v-else-if="formData.frequencyUnit === 14">
- <el-col
- v-for="(item, index) in recordRulesCycleList"
- :key="index"
- :span="6"
- class="cycle_item"
- >
- <span>第{{ index + 1 }}次</span>
- <div class="cycle_sub_item" v-if="pageType">
- <el-input
- v-model.number="item.month"
- size="small"
- placeholder="月"
- oninput="value = value.replace(/^(0+)|[^\d]+/g,'')"
- @input="(e) => inputMonth(e, index)"
- :disabled="isBindPlan"
- >
- <template #suffix>月</template>
- </el-input>
- </div>
- <div v-else>{{ item.month }}月</div>
- <div class="cycle_sub_item" v-if="pageType">
- <el-input
- v-model.number="item.day"
- size="small"
- placeholder="日"
- oninput="value = value.replace(/^(0+)|[^\d]+/g,'')"
- @input="(e) => inputDay(e, index)"
- :disabled="isBindPlan"
- >
- <template #suffix>日</template>
- </el-input>
- </div>
- <div v-else>{{ item.day }}日</div>
- <div class="cycle_sub_item" v-if="pageType">
- <el-input
- v-model.number="item.hour"
- size="small"
- placeholder="时"
- oninput="value = value.replace(/^0+(\d)|[^\d]+/g,'')"
- @input="(e) => inputHour(e, index)"
- :disabled="isBindPlan"
- >
- <template #suffix>时</template>
- </el-input>
- </div>
- <div v-else>{{ item.hour }}时</div>
- </el-col>
- </el-row>
- </div>
- </div>
- </template>
- <script>
- export default {
- props: {
- formData: {
- type: Object,
- default: () => {
- return {};
- }
- },
- // 编辑edit和新增add
- pageType: {
- type: String,
- default: ''
- },
- isBindPlan: {
- type: Boolean,
- default: () => {
- return false;
- }
- }
- },
- data() {
- return {
- // {
- // year: '', // 周期年
- // month: '', // 周期月
- // week: '', // 周期周
- // day: '', // 周期日
- // hour: '', // 周期时
- // minute: '', // 周期分
- // second: '' // 周期秒
- // }
- recordRulesCycleList: [],
- weekList: [
- { value: 1, label: '周一' },
- { value: 2, label: '周二' },
- { value: 3, label: '周三' },
- { value: 4, label: '周四' },
- { value: 5, label: '周五' },
- { value: 6, label: '周六' },
- { value: 7, label: '周日' }
- ],
- cycleOptObj: {
- 0: '次数',
- 1: '时/次',
- 2: '天/次',
- //3: '周/次',
- 4: '月/次',
- 5: '年/次',
- 11: '次/天',
- //12: '次/周',
- 13: '次/月',
- 14: '次/年'
- },
- cycleOpt: [
- { code: 0, label: '次数' },
- { code: 1, label: '时/次' },
- { code: 2, label: '天/次' },
- //{ code: 3, label: '周/次' },
- { code: 4, label: '月/次' },
- { code: 5, label: '年/次' },
- { code: 11, label: '次/天' },
- //{ code: 12, label: '次/周' },
- { code: 13, label: '次/月' },
- { code: 14, label: '次/年' }
- ]
- };
- },
- watch: {
- formData: {
- handler(val) {
- if (val.recordRulesCycleList) {
- this.recordRulesCycleList = val.recordRulesCycleList;
- }
- },
- // deep: true,
- // immediate: true
- }
- },
- methods: {
- setRecordRulesCycleList(list) {
- this.recordRulesCycleList = list;
- },
- // 巡点检周期输入数量
- cycleValueChange(val) {
- console.log(val);
- console.log(this.formData.frequencyUnit);
- const cycleType01 = [1, 2, 4, 5];
- const cycleType02 = [11, 13, 14];
- this.recordRulesCycleList = [];
- // 次在后
- console.log(cycleType01.includes(this.formData.frequencyUnit));
- if (cycleType01.includes(this.formData.frequencyUnit)) {
- this.recordRulesCycleList.push({
- month: 1, // 周期月
- day: 1, // 周期日
- hour: 0, // 周期时
- minute: 0 // 周期分
- });
- console.log(this.recordRulesCycleList);
- }
- // 次在前
- if (cycleType02.includes(this.formData.frequencyUnit)) {
- for (let i = 0; i < val; i++) {
- this.recordRulesCycleList.push({
- month: 1, // 周期月
- day: 1, // 周期日
- hour: 0, // 周期时
- minute: 0 // 周期分
- });
- }
- }
- // 时/次
- if (this.formData.frequencyUnit === 1) {
- this.recordRulesCycleList.forEach((item) => {
- delete item.month;
- delete item.day;
- delete item.hour;
- });
- }
- console.log(this.recordRulesCycleList);
- // 天/次、次/天
- if ([2, 11].includes(this.formData.frequencyUnit)) {
- this.recordRulesCycleList.forEach((item) => {
- delete item.month;
- delete item.day;
- });
- }
- // 月/次、次/月
- if ([4, 13].includes(this.formData.frequencyUnit)) {
- this.recordRulesCycleList.forEach((item) => {
- delete item.month;
- });
- }
- },
- // 周期类型选择
- handleCycleTypeChange() {
- this.cycleValueChange(this.formData.frequencyValue);
- },
- // 输入月
- inputMonth(e, index) {
- if (e > 12) {
- this.recordRulesCycleList[index].month = 1;
- return this.$message.warning('月份最大值为12月');
- }
- },
- // 输入日
- inputDay(e, index) {
- if (e > 31) {
- this.recordRulesCycleList[index].day = 1;
- return this.$message.warning('日期最大值为31日');
- }
- },
- // 输入时
- inputHour(e, index) {
- if (e > 23) {
- this.recordRulesCycleList[index].hour = 0;
- return this.$message.warning('时间最大值为23时');
- }
- },
- // 输入时
- inputMinute(e, index) {
- if (e > 59) {
- this.recordRulesCycleList[index].minute = 0;
- return this.$message.warning('分钟最大值为59分');
- }
- }
- }
- };
- </script>
- <style lang="scss" scoped>
- :deep(.el-input) {
- // width:100px;
- }
- .cycle_item {
- display: flex;
- align-items: center;
- color: #666;
- > span {
- width: 50px;
- }
- .cycle_sub_item {
- flex: 1;
- display: flex;
- align-items: center;
- }
- }
- .cycle01_box {
- display: flex;
- ::v-deep .el-input {
- width: 80px;
- }
- }
- .cycle_time_column {
- display: flex;
- }
- </style>
|