From 1c6544ffbf319bcbeb69d34a77865e33c9a9d206 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=BB=84=E7=84=B1?= Date: Wed, 28 Feb 2024 14:42:57 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=EF=BC=8C=E5=A2=9E=E5=8A=A0?= =?UTF-8?q?=E5=BC=BA=E5=88=B6=E5=BF=85=E5=A1=AB=E5=AD=97=E6=AE=B5=E6=96=B9?= =?UTF-8?q?=E6=B3=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/js/custom_form_status_indicator.js | 137 ++++++++++++------ 1 file changed, 92 insertions(+), 45 deletions(-) diff --git a/jikimo_frontend/static/src/js/custom_form_status_indicator.js b/jikimo_frontend/static/src/js/custom_form_status_indicator.js index 49c09983..33405fc3 100644 --- a/jikimo_frontend/static/src/js/custom_form_status_indicator.js +++ b/jikimo_frontend/static/src/js/custom_form_status_indicator.js @@ -9,67 +9,68 @@ var Dialog = require('web.Dialog'); // var {patch} = require("web.utils") 这句话也行 patch(FormStatusIndicator.prototype, 'jikimo_frontend.FormStatusIndicator', { - // 你可以重写或者添加一些方法和属性 - async _onDiscardChanges() { - // var self = this; - Dialog.confirm(this, _t("Are you sure you want to discard changes?"), { - title: _t("Discard Changes"), + // 你可以重写或者添加一些方法和属性 + async _onDiscardChanges() { + // var self = this; + Dialog.confirm(this, _t("Are you sure you want to discard changes?"), { + title: _t("Discard Changes"), - // confirm_callback: function () { - // self.model.discardChanges(self.handle); - // }, - }); - }, + // confirm_callback: function () { + // self.model.discardChanges(self.handle); + // }, + }); + }, - async discard() { - // if (window.confirm("Are you sure you want to discard changes?")) { - // await this.props.discard(); - // } - // const result = await this._confirmDiscardChange(); - await this._confirmDiscardChange(); - await this.props.discard(); - }, + async discard() { + // if (window.confirm("Are you sure you want to discard changes?")) { + // await this.props.discard(); + // } + // const result = await this._confirmDiscardChange(); + await this._confirmDiscardChange(); + await this.props.discard(); + }, - _confirmDiscardChange(){ - var self = this; - var def = new Promise(function (resolve, reject) { - var message = _t("请确认是否要舍弃之前的更改?"); - var dialog = Dialog.confirm(self, message, { - title: _t("Warning"), - confirm_callback: resolve.bind(self, true), - cancel_callback: reject, - }); - dialog.on('closed', self, reject); - }); - return def; - }, + _confirmDiscardChange() { + var self = this; + var def = new Promise(function (resolve, reject) { + var message = _t("请确认是否要舍弃之前的更改?"); + var dialog = Dialog.confirm(self, message, { + title: _t("Warning"), + confirm_callback: resolve.bind(self, true), + cancel_callback: reject, + }); + dialog.on('closed', self, reject); + }); + return def; + }, -} + } ); -$(function (){ +$(function () { document.addEventListener('click', function () { const dom = $('.o_form_status_indicator_buttons ') - if(dom) { + if (dom) { const dom1 = dom.children().eq(0) const dom2 = dom.children().eq(1) - if(!dom1.text()) { + if (!dom1.text()) { dom1.append('保存') dom2.append('取消') } } }) - function customRequired() { + + function customRequired() { let timer = null let timer_count = 0 clearInterval(timer) timer = setInterval(() => { - timer_count ++ + timer_count++ const dom = $('.custom_required') let tableDom = $('.table_custom_required') - if(tableDom.length) { + if (tableDom.length) { tableDom = tableDom.eq(0).parents('tr').children('.table_custom_required') - tableDom.each(function (){ + tableDom.each(function () { const i = $(this).index() const requiredDom = $(this).parents('table').find('thead').find('th').eq(i).find('span').eq(0) const t = requiredDom.text().replace('*', '') @@ -77,29 +78,75 @@ $(function (){ }) clearInterval(timer) } - if(dom.length) { - dom.each(function (){ + if (dom.length) { + dom.each(function () { const requiredDom = $(this).parent().prev().find('label') let t = requiredDom.html() - if(t.indexOf('c*') < 0) { + if (t.indexOf('c*') < 0) { t = '*' + t } requiredDom.html(t) }) clearInterval(timer) } - if(timer_count == 20) { + if (timer_count == 20) { clearInterval(timer) } - },500) + }, 500) } + + function setRequired(dom = {label: [], table: []}) { + let domTimer = null + let timer_count = 0 + clearInterval(domTimer) + domTimer = setInterval(() => { + timer_count++ + const lint = $('.o_form_view_container') + if (lint.length) { + clearInterval(domTimer) + const {label, table} = dom + if (label.length) { + $(dom.label.join(',')).each(function () { + let t = $(this).html() + if (t.indexOf('c*') < 0) { + t = '*' + t + } + $(this).html(t) + }) + } + + if (table.length) { + table.forEach(_ => { + const th = $(`th[data-name=${_}]`) + const t = th.find('span').eq(0).text().replace('*','') + th.find('span').eq(0).html('*' + t) + + }) + + } + } + if (timer_count == 20) { + clearInterval(domTimer) + } + }, 500) + } + var currentUrl = location.href + const customRequiredDom = { + label: ['label[for=production_line_id]','label[for=date_approve]','label[for=partner_id]', 'label[for=validity_date]', '.o_horizontal[role=radiogroup]', 'label[for=vat]', 'label[for=phone]', 'label[for=mobile]', 'label[for=email]', 'label[for=category_id]','label[for=date_order]','label[for=picking_type_id]'], + table: ['product_template_id', 'product_uom_qty', 'price_unit','product_id','product_qty'] + } const listenerUrl = setInterval(() => { const isChange = currentUrl != location.href - if(isChange) { + if (isChange) { currentUrl = location.href customRequired() + setRequired(customRequiredDom) + } + if($('label[for=production_line_id]')) { + setRequired({table: [], label: ['label[for=production_line_id]']}) } }, 500) customRequired() + setRequired(customRequiredDom) })