增加icon图表;修改供应商评价新增是选择模板禁用和提示逻辑
This commit is contained in:
@ -54,6 +54,180 @@
|
||||
<div class="content unicode" style="display: block;">
|
||||
<ul class="icon_lists dib-box">
|
||||
|
||||
<li class="dib">
|
||||
<span class="icon iconfont"></span>
|
||||
<div class="name">消息通知</div>
|
||||
<div class="code-name">&#xec35;</div>
|
||||
</li>
|
||||
|
||||
<li class="dib">
|
||||
<span class="icon iconfont"></span>
|
||||
<div class="name">供应商退出审核管理</div>
|
||||
<div class="code-name">&#xe618;</div>
|
||||
</li>
|
||||
|
||||
<li class="dib">
|
||||
<span class="icon iconfont"></span>
|
||||
<div class="name">供应商退出管理</div>
|
||||
<div class="code-name">&#xe77a;</div>
|
||||
</li>
|
||||
|
||||
<li class="dib">
|
||||
<span class="icon iconfont"></span>
|
||||
<div class="name">tianshen02</div>
|
||||
<div class="code-name">&#xe60a;</div>
|
||||
</li>
|
||||
|
||||
<li class="dib">
|
||||
<span class="icon iconfont"></span>
|
||||
<div class="name">黑名单管理</div>
|
||||
<div class="code-name">&#xe71a;</div>
|
||||
</li>
|
||||
|
||||
<li class="dib">
|
||||
<span class="icon iconfont"></span>
|
||||
<div class="name">入库管理</div>
|
||||
<div class="code-name">&#xe634;</div>
|
||||
</li>
|
||||
|
||||
<li class="dib">
|
||||
<span class="icon iconfont"></span>
|
||||
<div class="name">入库审核管理</div>
|
||||
<div class="code-name">&#xe61d;</div>
|
||||
</li>
|
||||
|
||||
<li class="dib">
|
||||
<span class="icon iconfont"></span>
|
||||
<div class="name">品类管理</div>
|
||||
<div class="code-name">&#xe607;</div>
|
||||
</li>
|
||||
|
||||
<li class="dib">
|
||||
<span class="icon iconfont"></span>
|
||||
<div class="name">品类库管理</div>
|
||||
<div class="code-name">&#xe666;</div>
|
||||
</li>
|
||||
|
||||
<li class="dib">
|
||||
<span class="icon iconfont"></span>
|
||||
<div class="name">品类库建库审核管理</div>
|
||||
<div class="code-name">&#xe62e;</div>
|
||||
</li>
|
||||
|
||||
<li class="dib">
|
||||
<span class="icon iconfont"></span>
|
||||
<div class="name">供应商品类库</div>
|
||||
<div class="code-name">&#xe757;</div>
|
||||
</li>
|
||||
|
||||
<li class="dib">
|
||||
<span class="icon iconfont"></span>
|
||||
<div class="name">供应商-准入管理</div>
|
||||
<div class="code-name">&#xe6ea;</div>
|
||||
</li>
|
||||
|
||||
<li class="dib">
|
||||
<span class="icon iconfont"></span>
|
||||
<div class="name">供应商准入</div>
|
||||
<div class="code-name">&#xe63a;</div>
|
||||
</li>
|
||||
|
||||
<li class="dib">
|
||||
<span class="icon iconfont"></span>
|
||||
<div class="name">供应商品类准入审核管理</div>
|
||||
<div class="code-name">&#xe63c;</div>
|
||||
</li>
|
||||
|
||||
<li class="dib">
|
||||
<span class="icon iconfont"></span>
|
||||
<div class="name">供应商准入审核管理</div>
|
||||
<div class="code-name">&#xe631;</div>
|
||||
</li>
|
||||
|
||||
<li class="dib">
|
||||
<span class="icon iconfont"></span>
|
||||
<div class="name">供应商品类准入管理</div>
|
||||
<div class="code-name">&#xe602;</div>
|
||||
</li>
|
||||
|
||||
<li class="dib">
|
||||
<span class="icon iconfont"></span>
|
||||
<div class="name">供应商准入评审管理</div>
|
||||
<div class="code-name">&#xe633;</div>
|
||||
</li>
|
||||
|
||||
<li class="dib">
|
||||
<span class="icon iconfont"></span>
|
||||
<div class="name">供应商注册代录</div>
|
||||
<div class="code-name">&#xe608;</div>
|
||||
</li>
|
||||
|
||||
<li class="dib">
|
||||
<span class="icon iconfont"></span>
|
||||
<div class="name">供应商信息管理</div>
|
||||
<div class="code-name">&#xe682;</div>
|
||||
</li>
|
||||
|
||||
<li class="dib">
|
||||
<span class="icon iconfont"></span>
|
||||
<div class="name">供应商变更审核管理</div>
|
||||
<div class="code-name">&#xe6e0;</div>
|
||||
</li>
|
||||
|
||||
<li class="dib">
|
||||
<span class="icon iconfont"></span>
|
||||
<div class="name">供应商信息检索</div>
|
||||
<div class="code-name">&#xe720;</div>
|
||||
</li>
|
||||
|
||||
<li class="dib">
|
||||
<span class="icon iconfont"></span>
|
||||
<div class="name">集团合格供应商查询</div>
|
||||
<div class="code-name">&#xe67a;</div>
|
||||
</li>
|
||||
|
||||
<li class="dib">
|
||||
<span class="icon iconfont"></span>
|
||||
<div class="name">注册供应商查询</div>
|
||||
<div class="code-name">&#xe68d;</div>
|
||||
</li>
|
||||
|
||||
<li class="dib">
|
||||
<span class="icon iconfont"></span>
|
||||
<div class="name">我的供应商查询</div>
|
||||
<div class="code-name">&#xe701;</div>
|
||||
</li>
|
||||
|
||||
<li class="dib">
|
||||
<span class="icon iconfont"></span>
|
||||
<div class="name">供应商消息</div>
|
||||
<div class="code-name">&#xe617;</div>
|
||||
</li>
|
||||
|
||||
<li class="dib">
|
||||
<span class="icon iconfont"></span>
|
||||
<div class="name">企业品类名录</div>
|
||||
<div class="code-name">&#xe7f9;</div>
|
||||
</li>
|
||||
|
||||
<li class="dib">
|
||||
<span class="icon iconfont"></span>
|
||||
<div class="name">工作台</div>
|
||||
<div class="code-name">&#xe606;</div>
|
||||
</li>
|
||||
|
||||
<li class="dib">
|
||||
<span class="icon iconfont"></span>
|
||||
<div class="name">变更进度查询</div>
|
||||
<div class="code-name">&#xe6c6;</div>
|
||||
</li>
|
||||
|
||||
<li class="dib">
|
||||
<span class="icon iconfont"></span>
|
||||
<div class="name">供应商后台</div>
|
||||
<div class="code-name">&#xe601;</div>
|
||||
</li>
|
||||
|
||||
<li class="dib">
|
||||
<span class="icon iconfont"></span>
|
||||
<div class="name">审查</div>
|
||||
@ -234,10 +408,10 @@
|
||||
<pre><code class="language-css"
|
||||
>@font-face {
|
||||
font-family: 'iconfont';
|
||||
src: url('iconfont.woff2?t=1751525773477') format('woff2'),
|
||||
url('iconfont.woff?t=1751525773477') format('woff'),
|
||||
url('iconfont.ttf?t=1751525773477') format('truetype'),
|
||||
url('iconfont.svg?t=1751525773477#iconfont') format('svg');
|
||||
src: url('iconfont.woff2?t=1751528599702') format('woff2'),
|
||||
url('iconfont.woff?t=1751528599702') format('woff'),
|
||||
url('iconfont.ttf?t=1751528599702') format('truetype'),
|
||||
url('iconfont.svg?t=1751528599702#iconfont') format('svg');
|
||||
}
|
||||
</code></pre>
|
||||
<h3 id="-iconfont-">第二步:定义使用 iconfont 的样式</h3>
|
||||
@ -263,6 +437,267 @@
|
||||
<div class="content font-class">
|
||||
<ul class="icon_lists dib-box">
|
||||
|
||||
<li class="dib">
|
||||
<span class="icon iconfont icon-xiaoxitongzhi"></span>
|
||||
<div class="name">
|
||||
消息通知
|
||||
</div>
|
||||
<div class="code-name">.icon-xiaoxitongzhi
|
||||
</div>
|
||||
</li>
|
||||
|
||||
<li class="dib">
|
||||
<span class="icon iconfont icon-confirm_margin"></span>
|
||||
<div class="name">
|
||||
供应商退出审核管理
|
||||
</div>
|
||||
<div class="code-name">.icon-confirm_margin
|
||||
</div>
|
||||
</li>
|
||||
|
||||
<li class="dib">
|
||||
<span class="icon iconfont icon-gongyingshangtuichuguanli"></span>
|
||||
<div class="name">
|
||||
供应商退出管理
|
||||
</div>
|
||||
<div class="code-name">.icon-gongyingshangtuichuguanli
|
||||
</div>
|
||||
</li>
|
||||
|
||||
<li class="dib">
|
||||
<span class="icon iconfont icon-tianshen02"></span>
|
||||
<div class="name">
|
||||
tianshen02
|
||||
</div>
|
||||
<div class="code-name">.icon-tianshen02
|
||||
</div>
|
||||
</li>
|
||||
|
||||
<li class="dib">
|
||||
<span class="icon iconfont icon-heimingdanguanli"></span>
|
||||
<div class="name">
|
||||
黑名单管理
|
||||
</div>
|
||||
<div class="code-name">.icon-heimingdanguanli
|
||||
</div>
|
||||
</li>
|
||||
|
||||
<li class="dib">
|
||||
<span class="icon iconfont icon-rukuguanli-"></span>
|
||||
<div class="name">
|
||||
入库管理
|
||||
</div>
|
||||
<div class="code-name">.icon-rukuguanli-
|
||||
</div>
|
||||
</li>
|
||||
|
||||
<li class="dib">
|
||||
<span class="icon iconfont icon-rukushenheguanli"></span>
|
||||
<div class="name">
|
||||
入库审核管理
|
||||
</div>
|
||||
<div class="code-name">.icon-rukushenheguanli
|
||||
</div>
|
||||
</li>
|
||||
|
||||
<li class="dib">
|
||||
<span class="icon iconfont icon-pinleiguanli"></span>
|
||||
<div class="name">
|
||||
品类管理
|
||||
</div>
|
||||
<div class="code-name">.icon-pinleiguanli
|
||||
</div>
|
||||
</li>
|
||||
|
||||
<li class="dib">
|
||||
<span class="icon iconfont icon-pinleikuguanli"></span>
|
||||
<div class="name">
|
||||
品类库管理
|
||||
</div>
|
||||
<div class="code-name">.icon-pinleikuguanli
|
||||
</div>
|
||||
</li>
|
||||
|
||||
<li class="dib">
|
||||
<span class="icon iconfont icon-gongzhuangkucun"></span>
|
||||
<div class="name">
|
||||
品类库建库审核管理
|
||||
</div>
|
||||
<div class="code-name">.icon-gongzhuangkucun
|
||||
</div>
|
||||
</li>
|
||||
|
||||
<li class="dib">
|
||||
<span class="icon iconfont icon-tikuguanli"></span>
|
||||
<div class="name">
|
||||
供应商品类库
|
||||
</div>
|
||||
<div class="code-name">.icon-tikuguanli
|
||||
</div>
|
||||
</li>
|
||||
|
||||
<li class="dib">
|
||||
<span class="icon iconfont icon-gongyingshang-zhunruguanli"></span>
|
||||
<div class="name">
|
||||
供应商-准入管理
|
||||
</div>
|
||||
<div class="code-name">.icon-gongyingshang-zhunruguanli
|
||||
</div>
|
||||
</li>
|
||||
|
||||
<li class="dib">
|
||||
<span class="icon iconfont icon-gongyingshangzhunru"></span>
|
||||
<div class="name">
|
||||
供应商准入
|
||||
</div>
|
||||
<div class="code-name">.icon-gongyingshangzhunru
|
||||
</div>
|
||||
</li>
|
||||
|
||||
<li class="dib">
|
||||
<span class="icon iconfont icon-hetong"></span>
|
||||
<div class="name">
|
||||
供应商品类准入审核管理
|
||||
</div>
|
||||
<div class="code-name">.icon-hetong
|
||||
</div>
|
||||
</li>
|
||||
|
||||
<li class="dib">
|
||||
<span class="icon iconfont icon-icon-FollowerManagement"></span>
|
||||
<div class="name">
|
||||
供应商准入审核管理
|
||||
</div>
|
||||
<div class="code-name">.icon-icon-FollowerManagement
|
||||
</div>
|
||||
</li>
|
||||
|
||||
<li class="dib">
|
||||
<span class="icon iconfont icon-ico3"></span>
|
||||
<div class="name">
|
||||
供应商品类准入管理
|
||||
</div>
|
||||
<div class="code-name">.icon-ico3
|
||||
</div>
|
||||
</li>
|
||||
|
||||
<li class="dib">
|
||||
<span class="icon iconfont icon-wodeyiban"></span>
|
||||
<div class="name">
|
||||
供应商准入评审管理
|
||||
</div>
|
||||
<div class="code-name">.icon-wodeyiban
|
||||
</div>
|
||||
</li>
|
||||
|
||||
<li class="dib">
|
||||
<span class="icon iconfont icon-yuntijiantubiao_huiyuanguanli"></span>
|
||||
<div class="name">
|
||||
供应商注册代录
|
||||
</div>
|
||||
<div class="code-name">.icon-yuntijiantubiao_huiyuanguanli
|
||||
</div>
|
||||
</li>
|
||||
|
||||
<li class="dib">
|
||||
<span class="icon iconfont icon-gongyingshangxinxiguanli"></span>
|
||||
<div class="name">
|
||||
供应商信息管理
|
||||
</div>
|
||||
<div class="code-name">.icon-gongyingshangxinxiguanli
|
||||
</div>
|
||||
</li>
|
||||
|
||||
<li class="dib">
|
||||
<span class="icon iconfont icon-biangengshenheguanli"></span>
|
||||
<div class="name">
|
||||
供应商变更审核管理
|
||||
</div>
|
||||
<div class="code-name">.icon-biangengshenheguanli
|
||||
</div>
|
||||
</li>
|
||||
|
||||
<li class="dib">
|
||||
<span class="icon iconfont icon-xinxijiansuobeifen"></span>
|
||||
<div class="name">
|
||||
供应商信息检索
|
||||
</div>
|
||||
<div class="code-name">.icon-xinxijiansuobeifen
|
||||
</div>
|
||||
</li>
|
||||
|
||||
<li class="dib">
|
||||
<span class="icon iconfont icon-hezha"></span>
|
||||
<div class="name">
|
||||
集团合格供应商查询
|
||||
</div>
|
||||
<div class="code-name">.icon-hezha
|
||||
</div>
|
||||
</li>
|
||||
|
||||
<li class="dib">
|
||||
<span class="icon iconfont icon-zhucechaxun"></span>
|
||||
<div class="name">
|
||||
注册供应商查询
|
||||
</div>
|
||||
<div class="code-name">.icon-zhucechaxun
|
||||
</div>
|
||||
</li>
|
||||
|
||||
<li class="dib">
|
||||
<span class="icon iconfont icon-wodechaxun"></span>
|
||||
<div class="name">
|
||||
我的供应商查询
|
||||
</div>
|
||||
<div class="code-name">.icon-wodechaxun
|
||||
</div>
|
||||
</li>
|
||||
|
||||
<li class="dib">
|
||||
<span class="icon iconfont icon-gongyingshangxiaoxi"></span>
|
||||
<div class="name">
|
||||
供应商消息
|
||||
</div>
|
||||
<div class="code-name">.icon-gongyingshangxiaoxi
|
||||
</div>
|
||||
</li>
|
||||
|
||||
<li class="dib">
|
||||
<span class="icon iconfont icon-leimupinleifenleileibie"></span>
|
||||
<div class="name">
|
||||
企业品类名录
|
||||
</div>
|
||||
<div class="code-name">.icon-leimupinleifenleileibie
|
||||
</div>
|
||||
</li>
|
||||
|
||||
<li class="dib">
|
||||
<span class="icon iconfont icon-gongzuotai"></span>
|
||||
<div class="name">
|
||||
工作台
|
||||
</div>
|
||||
<div class="code-name">.icon-gongzuotai
|
||||
</div>
|
||||
</li>
|
||||
|
||||
<li class="dib">
|
||||
<span class="icon iconfont icon-biangengjinduchaxun"></span>
|
||||
<div class="name">
|
||||
变更进度查询
|
||||
</div>
|
||||
<div class="code-name">.icon-biangengjinduchaxun
|
||||
</div>
|
||||
</li>
|
||||
|
||||
<li class="dib">
|
||||
<span class="icon iconfont icon-gongyingshanghoutai"></span>
|
||||
<div class="name">
|
||||
供应商后台
|
||||
</div>
|
||||
<div class="code-name">.icon-gongyingshanghoutai
|
||||
</div>
|
||||
</li>
|
||||
|
||||
<li class="dib">
|
||||
<span class="icon iconfont icon-shencha"></span>
|
||||
<div class="name">
|
||||
@ -533,6 +968,238 @@
|
||||
<div class="content symbol">
|
||||
<ul class="icon_lists dib-box">
|
||||
|
||||
<li class="dib">
|
||||
<svg class="icon svg-icon" aria-hidden="true">
|
||||
<use xlink:href="#icon-xiaoxitongzhi"></use>
|
||||
</svg>
|
||||
<div class="name">消息通知</div>
|
||||
<div class="code-name">#icon-xiaoxitongzhi</div>
|
||||
</li>
|
||||
|
||||
<li class="dib">
|
||||
<svg class="icon svg-icon" aria-hidden="true">
|
||||
<use xlink:href="#icon-confirm_margin"></use>
|
||||
</svg>
|
||||
<div class="name">供应商退出审核管理</div>
|
||||
<div class="code-name">#icon-confirm_margin</div>
|
||||
</li>
|
||||
|
||||
<li class="dib">
|
||||
<svg class="icon svg-icon" aria-hidden="true">
|
||||
<use xlink:href="#icon-gongyingshangtuichuguanli"></use>
|
||||
</svg>
|
||||
<div class="name">供应商退出管理</div>
|
||||
<div class="code-name">#icon-gongyingshangtuichuguanli</div>
|
||||
</li>
|
||||
|
||||
<li class="dib">
|
||||
<svg class="icon svg-icon" aria-hidden="true">
|
||||
<use xlink:href="#icon-tianshen02"></use>
|
||||
</svg>
|
||||
<div class="name">tianshen02</div>
|
||||
<div class="code-name">#icon-tianshen02</div>
|
||||
</li>
|
||||
|
||||
<li class="dib">
|
||||
<svg class="icon svg-icon" aria-hidden="true">
|
||||
<use xlink:href="#icon-heimingdanguanli"></use>
|
||||
</svg>
|
||||
<div class="name">黑名单管理</div>
|
||||
<div class="code-name">#icon-heimingdanguanli</div>
|
||||
</li>
|
||||
|
||||
<li class="dib">
|
||||
<svg class="icon svg-icon" aria-hidden="true">
|
||||
<use xlink:href="#icon-rukuguanli-"></use>
|
||||
</svg>
|
||||
<div class="name">入库管理</div>
|
||||
<div class="code-name">#icon-rukuguanli-</div>
|
||||
</li>
|
||||
|
||||
<li class="dib">
|
||||
<svg class="icon svg-icon" aria-hidden="true">
|
||||
<use xlink:href="#icon-rukushenheguanli"></use>
|
||||
</svg>
|
||||
<div class="name">入库审核管理</div>
|
||||
<div class="code-name">#icon-rukushenheguanli</div>
|
||||
</li>
|
||||
|
||||
<li class="dib">
|
||||
<svg class="icon svg-icon" aria-hidden="true">
|
||||
<use xlink:href="#icon-pinleiguanli"></use>
|
||||
</svg>
|
||||
<div class="name">品类管理</div>
|
||||
<div class="code-name">#icon-pinleiguanli</div>
|
||||
</li>
|
||||
|
||||
<li class="dib">
|
||||
<svg class="icon svg-icon" aria-hidden="true">
|
||||
<use xlink:href="#icon-pinleikuguanli"></use>
|
||||
</svg>
|
||||
<div class="name">品类库管理</div>
|
||||
<div class="code-name">#icon-pinleikuguanli</div>
|
||||
</li>
|
||||
|
||||
<li class="dib">
|
||||
<svg class="icon svg-icon" aria-hidden="true">
|
||||
<use xlink:href="#icon-gongzhuangkucun"></use>
|
||||
</svg>
|
||||
<div class="name">品类库建库审核管理</div>
|
||||
<div class="code-name">#icon-gongzhuangkucun</div>
|
||||
</li>
|
||||
|
||||
<li class="dib">
|
||||
<svg class="icon svg-icon" aria-hidden="true">
|
||||
<use xlink:href="#icon-tikuguanli"></use>
|
||||
</svg>
|
||||
<div class="name">供应商品类库</div>
|
||||
<div class="code-name">#icon-tikuguanli</div>
|
||||
</li>
|
||||
|
||||
<li class="dib">
|
||||
<svg class="icon svg-icon" aria-hidden="true">
|
||||
<use xlink:href="#icon-gongyingshang-zhunruguanli"></use>
|
||||
</svg>
|
||||
<div class="name">供应商-准入管理</div>
|
||||
<div class="code-name">#icon-gongyingshang-zhunruguanli</div>
|
||||
</li>
|
||||
|
||||
<li class="dib">
|
||||
<svg class="icon svg-icon" aria-hidden="true">
|
||||
<use xlink:href="#icon-gongyingshangzhunru"></use>
|
||||
</svg>
|
||||
<div class="name">供应商准入</div>
|
||||
<div class="code-name">#icon-gongyingshangzhunru</div>
|
||||
</li>
|
||||
|
||||
<li class="dib">
|
||||
<svg class="icon svg-icon" aria-hidden="true">
|
||||
<use xlink:href="#icon-hetong"></use>
|
||||
</svg>
|
||||
<div class="name">供应商品类准入审核管理</div>
|
||||
<div class="code-name">#icon-hetong</div>
|
||||
</li>
|
||||
|
||||
<li class="dib">
|
||||
<svg class="icon svg-icon" aria-hidden="true">
|
||||
<use xlink:href="#icon-icon-FollowerManagement"></use>
|
||||
</svg>
|
||||
<div class="name">供应商准入审核管理</div>
|
||||
<div class="code-name">#icon-icon-FollowerManagement</div>
|
||||
</li>
|
||||
|
||||
<li class="dib">
|
||||
<svg class="icon svg-icon" aria-hidden="true">
|
||||
<use xlink:href="#icon-ico3"></use>
|
||||
</svg>
|
||||
<div class="name">供应商品类准入管理</div>
|
||||
<div class="code-name">#icon-ico3</div>
|
||||
</li>
|
||||
|
||||
<li class="dib">
|
||||
<svg class="icon svg-icon" aria-hidden="true">
|
||||
<use xlink:href="#icon-wodeyiban"></use>
|
||||
</svg>
|
||||
<div class="name">供应商准入评审管理</div>
|
||||
<div class="code-name">#icon-wodeyiban</div>
|
||||
</li>
|
||||
|
||||
<li class="dib">
|
||||
<svg class="icon svg-icon" aria-hidden="true">
|
||||
<use xlink:href="#icon-yuntijiantubiao_huiyuanguanli"></use>
|
||||
</svg>
|
||||
<div class="name">供应商注册代录</div>
|
||||
<div class="code-name">#icon-yuntijiantubiao_huiyuanguanli</div>
|
||||
</li>
|
||||
|
||||
<li class="dib">
|
||||
<svg class="icon svg-icon" aria-hidden="true">
|
||||
<use xlink:href="#icon-gongyingshangxinxiguanli"></use>
|
||||
</svg>
|
||||
<div class="name">供应商信息管理</div>
|
||||
<div class="code-name">#icon-gongyingshangxinxiguanli</div>
|
||||
</li>
|
||||
|
||||
<li class="dib">
|
||||
<svg class="icon svg-icon" aria-hidden="true">
|
||||
<use xlink:href="#icon-biangengshenheguanli"></use>
|
||||
</svg>
|
||||
<div class="name">供应商变更审核管理</div>
|
||||
<div class="code-name">#icon-biangengshenheguanli</div>
|
||||
</li>
|
||||
|
||||
<li class="dib">
|
||||
<svg class="icon svg-icon" aria-hidden="true">
|
||||
<use xlink:href="#icon-xinxijiansuobeifen"></use>
|
||||
</svg>
|
||||
<div class="name">供应商信息检索</div>
|
||||
<div class="code-name">#icon-xinxijiansuobeifen</div>
|
||||
</li>
|
||||
|
||||
<li class="dib">
|
||||
<svg class="icon svg-icon" aria-hidden="true">
|
||||
<use xlink:href="#icon-hezha"></use>
|
||||
</svg>
|
||||
<div class="name">集团合格供应商查询</div>
|
||||
<div class="code-name">#icon-hezha</div>
|
||||
</li>
|
||||
|
||||
<li class="dib">
|
||||
<svg class="icon svg-icon" aria-hidden="true">
|
||||
<use xlink:href="#icon-zhucechaxun"></use>
|
||||
</svg>
|
||||
<div class="name">注册供应商查询</div>
|
||||
<div class="code-name">#icon-zhucechaxun</div>
|
||||
</li>
|
||||
|
||||
<li class="dib">
|
||||
<svg class="icon svg-icon" aria-hidden="true">
|
||||
<use xlink:href="#icon-wodechaxun"></use>
|
||||
</svg>
|
||||
<div class="name">我的供应商查询</div>
|
||||
<div class="code-name">#icon-wodechaxun</div>
|
||||
</li>
|
||||
|
||||
<li class="dib">
|
||||
<svg class="icon svg-icon" aria-hidden="true">
|
||||
<use xlink:href="#icon-gongyingshangxiaoxi"></use>
|
||||
</svg>
|
||||
<div class="name">供应商消息</div>
|
||||
<div class="code-name">#icon-gongyingshangxiaoxi</div>
|
||||
</li>
|
||||
|
||||
<li class="dib">
|
||||
<svg class="icon svg-icon" aria-hidden="true">
|
||||
<use xlink:href="#icon-leimupinleifenleileibie"></use>
|
||||
</svg>
|
||||
<div class="name">企业品类名录</div>
|
||||
<div class="code-name">#icon-leimupinleifenleileibie</div>
|
||||
</li>
|
||||
|
||||
<li class="dib">
|
||||
<svg class="icon svg-icon" aria-hidden="true">
|
||||
<use xlink:href="#icon-gongzuotai"></use>
|
||||
</svg>
|
||||
<div class="name">工作台</div>
|
||||
<div class="code-name">#icon-gongzuotai</div>
|
||||
</li>
|
||||
|
||||
<li class="dib">
|
||||
<svg class="icon svg-icon" aria-hidden="true">
|
||||
<use xlink:href="#icon-biangengjinduchaxun"></use>
|
||||
</svg>
|
||||
<div class="name">变更进度查询</div>
|
||||
<div class="code-name">#icon-biangengjinduchaxun</div>
|
||||
</li>
|
||||
|
||||
<li class="dib">
|
||||
<svg class="icon svg-icon" aria-hidden="true">
|
||||
<use xlink:href="#icon-gongyingshanghoutai"></use>
|
||||
</svg>
|
||||
<div class="name">供应商后台</div>
|
||||
<div class="code-name">#icon-gongyingshanghoutai</div>
|
||||
</li>
|
||||
|
||||
<li class="dib">
|
||||
<svg class="icon svg-icon" aria-hidden="true">
|
||||
<use xlink:href="#icon-shencha"></use>
|
||||
|
@ -1,9 +1,9 @@
|
||||
@font-face {
|
||||
font-family: "iconfont"; /* Project id 4950533 */
|
||||
src: url('iconfont.woff2?t=1751525773477') format('woff2'),
|
||||
url('iconfont.woff?t=1751525773477') format('woff'),
|
||||
url('iconfont.ttf?t=1751525773477') format('truetype'),
|
||||
url('iconfont.svg?t=1751525773477#iconfont') format('svg');
|
||||
src: url('iconfont.woff2?t=1751528599702') format('woff2'),
|
||||
url('iconfont.woff?t=1751528599702') format('woff'),
|
||||
url('iconfont.ttf?t=1751528599702') format('truetype'),
|
||||
url('iconfont.svg?t=1751528599702#iconfont') format('svg');
|
||||
}
|
||||
|
||||
.iconfont {
|
||||
@ -14,6 +14,122 @@
|
||||
-moz-osx-font-smoothing: grayscale;
|
||||
}
|
||||
|
||||
.icon-xiaoxitongzhi:before {
|
||||
content: "\ec35";
|
||||
}
|
||||
|
||||
.icon-confirm_margin:before {
|
||||
content: "\e618";
|
||||
}
|
||||
|
||||
.icon-gongyingshangtuichuguanli:before {
|
||||
content: "\e77a";
|
||||
}
|
||||
|
||||
.icon-tianshen02:before {
|
||||
content: "\e60a";
|
||||
}
|
||||
|
||||
.icon-heimingdanguanli:before {
|
||||
content: "\e71a";
|
||||
}
|
||||
|
||||
.icon-rukuguanli-:before {
|
||||
content: "\e634";
|
||||
}
|
||||
|
||||
.icon-rukushenheguanli:before {
|
||||
content: "\e61d";
|
||||
}
|
||||
|
||||
.icon-pinleiguanli:before {
|
||||
content: "\e607";
|
||||
}
|
||||
|
||||
.icon-pinleikuguanli:before {
|
||||
content: "\e666";
|
||||
}
|
||||
|
||||
.icon-gongzhuangkucun:before {
|
||||
content: "\e62e";
|
||||
}
|
||||
|
||||
.icon-tikuguanli:before {
|
||||
content: "\e757";
|
||||
}
|
||||
|
||||
.icon-gongyingshang-zhunruguanli:before {
|
||||
content: "\e6ea";
|
||||
}
|
||||
|
||||
.icon-gongyingshangzhunru:before {
|
||||
content: "\e63a";
|
||||
}
|
||||
|
||||
.icon-hetong:before {
|
||||
content: "\e63c";
|
||||
}
|
||||
|
||||
.icon-icon-FollowerManagement:before {
|
||||
content: "\e631";
|
||||
}
|
||||
|
||||
.icon-ico3:before {
|
||||
content: "\e602";
|
||||
}
|
||||
|
||||
.icon-wodeyiban:before {
|
||||
content: "\e633";
|
||||
}
|
||||
|
||||
.icon-yuntijiantubiao_huiyuanguanli:before {
|
||||
content: "\e608";
|
||||
}
|
||||
|
||||
.icon-gongyingshangxinxiguanli:before {
|
||||
content: "\e682";
|
||||
}
|
||||
|
||||
.icon-biangengshenheguanli:before {
|
||||
content: "\e6e0";
|
||||
}
|
||||
|
||||
.icon-xinxijiansuobeifen:before {
|
||||
content: "\e720";
|
||||
}
|
||||
|
||||
.icon-hezha:before {
|
||||
content: "\e67a";
|
||||
}
|
||||
|
||||
.icon-zhucechaxun:before {
|
||||
content: "\e68d";
|
||||
}
|
||||
|
||||
.icon-wodechaxun:before {
|
||||
content: "\e701";
|
||||
}
|
||||
|
||||
.icon-gongyingshangxiaoxi:before {
|
||||
content: "\e617";
|
||||
}
|
||||
|
||||
.icon-leimupinleifenleileibie:before {
|
||||
content: "\e7f9";
|
||||
}
|
||||
|
||||
.icon-gongzuotai:before {
|
||||
content: "\e606";
|
||||
}
|
||||
|
||||
.icon-biangengjinduchaxun:before {
|
||||
content: "\e6c6";
|
||||
}
|
||||
|
||||
.icon-gongyingshanghoutai:before {
|
||||
content: "\e601";
|
||||
}
|
||||
|
||||
.icon-shencha:before {
|
||||
content: "\e672";
|
||||
}
|
||||
|
File diff suppressed because one or more lines are too long
@ -5,6 +5,209 @@
|
||||
"css_prefix_text": "icon-",
|
||||
"description": "",
|
||||
"glyphs": [
|
||||
{
|
||||
"icon_id": "5767876",
|
||||
"name": "消息通知",
|
||||
"font_class": "xiaoxitongzhi",
|
||||
"unicode": "ec35",
|
||||
"unicode_decimal": 60469
|
||||
},
|
||||
{
|
||||
"icon_id": "13411430",
|
||||
"name": "供应商退出审核管理",
|
||||
"font_class": "confirm_margin",
|
||||
"unicode": "e618",
|
||||
"unicode_decimal": 58904
|
||||
},
|
||||
{
|
||||
"icon_id": "42522350",
|
||||
"name": "供应商退出管理",
|
||||
"font_class": "gongyingshangtuichuguanli",
|
||||
"unicode": "e77a",
|
||||
"unicode_decimal": 59258
|
||||
},
|
||||
{
|
||||
"icon_id": "15307721",
|
||||
"name": "tianshen02",
|
||||
"font_class": "tianshen02",
|
||||
"unicode": "e60a",
|
||||
"unicode_decimal": 58890
|
||||
},
|
||||
{
|
||||
"icon_id": "28638615",
|
||||
"name": "黑名单管理",
|
||||
"font_class": "heimingdanguanli",
|
||||
"unicode": "e71a",
|
||||
"unicode_decimal": 59162
|
||||
},
|
||||
{
|
||||
"icon_id": "6789086",
|
||||
"name": "入库管理",
|
||||
"font_class": "rukuguanli-",
|
||||
"unicode": "e634",
|
||||
"unicode_decimal": 58932
|
||||
},
|
||||
{
|
||||
"icon_id": "38737003",
|
||||
"name": "入库审核管理",
|
||||
"font_class": "rukushenheguanli",
|
||||
"unicode": "e61d",
|
||||
"unicode_decimal": 58909
|
||||
},
|
||||
{
|
||||
"icon_id": "9609654",
|
||||
"name": "品类管理",
|
||||
"font_class": "pinleiguanli",
|
||||
"unicode": "e607",
|
||||
"unicode_decimal": 58887
|
||||
},
|
||||
{
|
||||
"icon_id": "28648732",
|
||||
"name": "品类库管理",
|
||||
"font_class": "pinleikuguanli",
|
||||
"unicode": "e666",
|
||||
"unicode_decimal": 58982
|
||||
},
|
||||
{
|
||||
"icon_id": "34572462",
|
||||
"name": "品类库建库审核管理",
|
||||
"font_class": "gongzhuangkucun",
|
||||
"unicode": "e62e",
|
||||
"unicode_decimal": 58926
|
||||
},
|
||||
{
|
||||
"icon_id": "5996647",
|
||||
"name": "供应商品类库",
|
||||
"font_class": "tikuguanli",
|
||||
"unicode": "e757",
|
||||
"unicode_decimal": 59223
|
||||
},
|
||||
{
|
||||
"icon_id": "9171168",
|
||||
"name": "供应商-准入管理",
|
||||
"font_class": "gongyingshang-zhunruguanli",
|
||||
"unicode": "e6ea",
|
||||
"unicode_decimal": 59114
|
||||
},
|
||||
{
|
||||
"icon_id": "12234976",
|
||||
"name": "供应商准入",
|
||||
"font_class": "gongyingshangzhunru",
|
||||
"unicode": "e63a",
|
||||
"unicode_decimal": 58938
|
||||
},
|
||||
{
|
||||
"icon_id": "18023194",
|
||||
"name": "供应商品类准入审核管理",
|
||||
"font_class": "hetong",
|
||||
"unicode": "e63c",
|
||||
"unicode_decimal": 58940
|
||||
},
|
||||
{
|
||||
"icon_id": "20664884",
|
||||
"name": "供应商准入审核管理",
|
||||
"font_class": "icon-FollowerManagement",
|
||||
"unicode": "e631",
|
||||
"unicode_decimal": 58929
|
||||
},
|
||||
{
|
||||
"icon_id": "22850117",
|
||||
"name": "供应商品类准入管理",
|
||||
"font_class": "ico3",
|
||||
"unicode": "e602",
|
||||
"unicode_decimal": 58882
|
||||
},
|
||||
{
|
||||
"icon_id": "32058481",
|
||||
"name": "供应商准入评审管理",
|
||||
"font_class": "wodeyiban",
|
||||
"unicode": "e633",
|
||||
"unicode_decimal": 58931
|
||||
},
|
||||
{
|
||||
"icon_id": "6753037",
|
||||
"name": "供应商注册代录",
|
||||
"font_class": "yuntijiantubiao_huiyuanguanli",
|
||||
"unicode": "e608",
|
||||
"unicode_decimal": 58888
|
||||
},
|
||||
{
|
||||
"icon_id": "36778371",
|
||||
"name": "供应商信息管理",
|
||||
"font_class": "gongyingshangxinxiguanli",
|
||||
"unicode": "e682",
|
||||
"unicode_decimal": 59010
|
||||
},
|
||||
{
|
||||
"icon_id": "43221128",
|
||||
"name": "供应商变更审核管理",
|
||||
"font_class": "biangengshenheguanli",
|
||||
"unicode": "e6e0",
|
||||
"unicode_decimal": 59104
|
||||
},
|
||||
{
|
||||
"icon_id": "16840422",
|
||||
"name": "供应商信息检索",
|
||||
"font_class": "xinxijiansuobeifen",
|
||||
"unicode": "e720",
|
||||
"unicode_decimal": 59168
|
||||
},
|
||||
{
|
||||
"icon_id": "7303493",
|
||||
"name": "集团合格供应商查询",
|
||||
"font_class": "hezha",
|
||||
"unicode": "e67a",
|
||||
"unicode_decimal": 59002
|
||||
},
|
||||
{
|
||||
"icon_id": "9806465",
|
||||
"name": "注册供应商查询",
|
||||
"font_class": "zhucechaxun",
|
||||
"unicode": "e68d",
|
||||
"unicode_decimal": 59021
|
||||
},
|
||||
{
|
||||
"icon_id": "41582327",
|
||||
"name": "我的供应商查询",
|
||||
"font_class": "wodechaxun",
|
||||
"unicode": "e701",
|
||||
"unicode_decimal": 59137
|
||||
},
|
||||
{
|
||||
"icon_id": "836928",
|
||||
"name": "供应商消息",
|
||||
"font_class": "gongyingshangxiaoxi",
|
||||
"unicode": "e617",
|
||||
"unicode_decimal": 58903
|
||||
},
|
||||
{
|
||||
"icon_id": "689262",
|
||||
"name": "企业品类名录",
|
||||
"font_class": "leimupinleifenleileibie",
|
||||
"unicode": "e7f9",
|
||||
"unicode_decimal": 59385
|
||||
},
|
||||
{
|
||||
"icon_id": "7215957",
|
||||
"name": "工作台",
|
||||
"font_class": "gongzuotai",
|
||||
"unicode": "e606",
|
||||
"unicode_decimal": 58886
|
||||
},
|
||||
{
|
||||
"icon_id": "9359238",
|
||||
"name": "变更进度查询",
|
||||
"font_class": "biangengjinduchaxun",
|
||||
"unicode": "e6c6",
|
||||
"unicode_decimal": 59078
|
||||
},
|
||||
{
|
||||
"icon_id": "41664529",
|
||||
"name": "供应商后台",
|
||||
"font_class": "gongyingshanghoutai",
|
||||
"unicode": "e601",
|
||||
"unicode_decimal": 58881
|
||||
},
|
||||
{
|
||||
"icon_id": "28410627",
|
||||
"name": "审查",
|
||||
|
File diff suppressed because one or more lines are too long
Before Width: | Height: | Size: 63 KiB After Width: | Height: | Size: 113 KiB |
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -65,6 +65,12 @@ export default {
|
||||
'supplierTemplateManage.confirm.ok': 'OK',
|
||||
'supplierTemplateManage.confirm.cancel': 'Cancel',
|
||||
|
||||
// Template switch confirmation
|
||||
'supplierTemplateManage.confirm.switchTemplate.title': 'Confirm Template Switch',
|
||||
'supplierTemplateManage.confirm.switchTemplate.content': 'Switching template will overwrite current edited data. Do you want to continue?',
|
||||
'supplierTemplateManage.confirm.switchTemplate.ok': 'OK',
|
||||
'supplierTemplateManage.confirm.switchTemplate.cancel': 'Cancel',
|
||||
|
||||
// Detail page
|
||||
'supplierTemplateManage.detail.title': 'Template Details',
|
||||
'supplierTemplateManage.detail.card.basicInfo': 'Basic Information',
|
||||
|
@ -64,6 +64,12 @@ export default {
|
||||
'supplierTemplateManage.confirm.ok': '确定',
|
||||
'supplierTemplateManage.confirm.cancel': '取消',
|
||||
|
||||
// 模板切换确认
|
||||
'supplierTemplateManage.confirm.switchTemplate.title': '确认切换模板',
|
||||
'supplierTemplateManage.confirm.switchTemplate.content': '切换模板将覆盖当前已编辑的数据,是否继续?',
|
||||
'supplierTemplateManage.confirm.switchTemplate.ok': '确定',
|
||||
'supplierTemplateManage.confirm.switchTemplate.cancel': '取消',
|
||||
|
||||
// 详情页面
|
||||
'supplierTemplateManage.detail.title': '模板详情',
|
||||
'supplierTemplateManage.detail.card.basicInfo': '基本信息',
|
||||
|
@ -79,8 +79,8 @@ const SupplierAnnualReview: React.FC = () => {
|
||||
if (params.annualreviewTheme) {
|
||||
requestParams.annualreviewTheme = params.annualreviewTheme;
|
||||
}
|
||||
if (params.reviewStatus) {
|
||||
requestParams.reviewStatus = params.reviewStatus;
|
||||
if (params.status) {
|
||||
requestParams.status = params.status;
|
||||
}
|
||||
if (params.timeRange && params.timeRange.length === 2) {
|
||||
requestParams.startTime = params.timeRange[0];
|
||||
@ -213,8 +213,8 @@ const SupplierAnnualReview: React.FC = () => {
|
||||
},
|
||||
{
|
||||
title: intl.formatMessage({ id: 'supplierAnnualReview.list.status' }),
|
||||
dataIndex: 'reviewStatusName',
|
||||
key: 'reviewStatusName',
|
||||
dataIndex: 'statusName',
|
||||
key: 'statusName',
|
||||
width: 100
|
||||
},
|
||||
{
|
||||
@ -281,7 +281,7 @@ const SupplierAnnualReview: React.FC = () => {
|
||||
<Form.Item name="annualreviewTheme" label={intl.formatMessage({ id: 'supplierAnnualReview.list.reviewTheme' })}>
|
||||
<Input placeholder={intl.formatMessage({ id: 'supplierAnnualReview.list.pleaseInputReviewTheme' })} allowClear />
|
||||
</Form.Item>
|
||||
<Form.Item name="reviewStatus" label={intl.formatMessage({ id: 'supplierAnnualReview.list.status' })}>
|
||||
<Form.Item name="status" label={intl.formatMessage({ id: 'supplierAnnualReview.list.status' })}>
|
||||
<Select placeholder={intl.formatMessage({ id: 'supplierAnnualReview.list.pleaseSelectStatus' })} allowClear style={{ width: 120 }}>
|
||||
{reviewStatus.map((item) => (
|
||||
<Option key={item.code} value={item.code}>{item.dicName}</Option>
|
||||
|
@ -1,30 +1,14 @@
|
||||
import React, { useState, useEffect } from 'react';
|
||||
import { history, useIntl } from 'umi';
|
||||
import {
|
||||
Button,
|
||||
Table,
|
||||
Space,
|
||||
message,
|
||||
Input,
|
||||
Select,
|
||||
Form,
|
||||
Tooltip,
|
||||
Tag,
|
||||
} from 'antd';
|
||||
import { Button, Table, Space, message, Input, Select, Form, Tooltip, Tag } from 'antd';
|
||||
import type { TablePaginationConfig } from 'antd';
|
||||
import {
|
||||
PlusOutlined,
|
||||
DeleteOutlined,
|
||||
SearchOutlined,
|
||||
} from '@ant-design/icons';
|
||||
import { PlusOutlined, DeleteOutlined, SearchOutlined } from '@ant-design/icons';
|
||||
import {
|
||||
TemplateStatusText,
|
||||
TemplateStatusColor,
|
||||
TemplateStatus,
|
||||
} from '@/dicts/supplierTemplateDict';
|
||||
import {
|
||||
getTemplateList,
|
||||
} from '@/servers/api/supplierEvaluate';
|
||||
import { getTemplateList } from '@/servers/api/supplierEvaluate';
|
||||
import CategorySelector from '@/components/CategorySelector/CategorySelector';
|
||||
|
||||
const { Option } = Select;
|
||||
@ -41,15 +25,13 @@ const SupplierTemplateManage: React.FC = () => {
|
||||
total: 0,
|
||||
showSizeChanger: true,
|
||||
showQuickJumper: true,
|
||||
showTotal: (total) => intl.formatMessage(
|
||||
{ id: 'supplierTemplateManage.pagination.total' },
|
||||
{ total }
|
||||
),
|
||||
showTotal: (total) =>
|
||||
intl.formatMessage({ id: 'supplierTemplateManage.pagination.total' }, { total }),
|
||||
});
|
||||
const [searchParams, setSearchParams] = useState({});
|
||||
|
||||
// 部门下拉选项
|
||||
const [companyOptions, setCompanyOptions] = useState<{ label: string, value: string }[]>([
|
||||
const [companyOptions, setCompanyOptions] = useState<{ label: string; value: string }[]>([
|
||||
{ label: '中山市合创展包装材料有限公司', value: '中山市合创展包装材料有限公司' },
|
||||
{ label: '广州市科技发展有限公司', value: '广州市科技发展有限公司' },
|
||||
{ label: '深圳市创新科技有限公司', value: '深圳市创新科技有限公司' },
|
||||
@ -57,11 +39,7 @@ const SupplierTemplateManage: React.FC = () => {
|
||||
]);
|
||||
|
||||
// 获取模板列表
|
||||
const fetchTemplateList = async (
|
||||
current = 1,
|
||||
pageSize = 10,
|
||||
params = searchParams,
|
||||
) => {
|
||||
const fetchTemplateList = async (current = 1, pageSize = 10, params = searchParams) => {
|
||||
// 更新搜索参数状态
|
||||
if (params !== searchParams) {
|
||||
setSearchParams(params);
|
||||
@ -81,7 +59,7 @@ const SupplierTemplateManage: React.FC = () => {
|
||||
|
||||
if (res.success && res.data) {
|
||||
// 处理返回的数据
|
||||
const records = res.data.records
|
||||
const records = res.data.records;
|
||||
|
||||
setTemplateData(records);
|
||||
setPagination({
|
||||
@ -91,7 +69,9 @@ const SupplierTemplateManage: React.FC = () => {
|
||||
total: res.data.total,
|
||||
});
|
||||
} else {
|
||||
message.error(intl.formatMessage({ id: 'supplierTemplateManage.message.fetchFailed' }) || res.message);
|
||||
message.error(
|
||||
intl.formatMessage({ id: 'supplierTemplateManage.message.fetchFailed' }) || res.message,
|
||||
);
|
||||
}
|
||||
} catch (error) {
|
||||
console.error('获取模板列表失败:', error);
|
||||
@ -113,7 +93,7 @@ const SupplierTemplateManage: React.FC = () => {
|
||||
pathname: 'supplierTemplateManageDetail',
|
||||
state: {
|
||||
id: record.id,
|
||||
}
|
||||
},
|
||||
});
|
||||
};
|
||||
|
||||
@ -124,16 +104,19 @@ const SupplierTemplateManage: React.FC = () => {
|
||||
pathname: 'supplierTemplateManageAdd',
|
||||
state: {
|
||||
isEdit: true,
|
||||
editData: record
|
||||
}
|
||||
editData: record,
|
||||
},
|
||||
});
|
||||
};
|
||||
|
||||
// 获取状态标签
|
||||
const getStatusTag = (status: string | undefined) => {
|
||||
if (!status) return <Tag>{intl.formatMessage({ id: 'supplierTemplateManage.status.unknown' })}</Tag>;
|
||||
if (!status)
|
||||
return <Tag>{intl.formatMessage({ id: 'supplierTemplateManage.status.unknown' })}</Tag>;
|
||||
const color = TemplateStatusColor[status as keyof typeof TemplateStatusColor] || 'default';
|
||||
const text = TemplateStatusText[status as keyof typeof TemplateStatusText] || intl.formatMessage({ id: 'supplierTemplateManage.status.unknown' });
|
||||
const text =
|
||||
TemplateStatusText[status as keyof typeof TemplateStatusText] ||
|
||||
intl.formatMessage({ id: 'supplierTemplateManage.status.unknown' });
|
||||
return <Tag color={color}>{text}</Tag>;
|
||||
};
|
||||
|
||||
@ -209,9 +192,12 @@ const SupplierTemplateManage: React.FC = () => {
|
||||
align: 'center' as const,
|
||||
render: (_: unknown, record: SupplierTemplateManage.TemplateItem) => (
|
||||
<Space size="middle">
|
||||
<Button type="link" onClick={() => handleEdit(record)}>
|
||||
{intl.formatMessage({ id: 'supplierTemplateManage.button.edit' })}
|
||||
</Button>
|
||||
{/* 只有草稿状态才可以编辑 */}
|
||||
{record.status === TemplateStatus.DRAFT && (
|
||||
<Button type="link" onClick={() => handleEdit(record)}>
|
||||
{intl.formatMessage({ id: 'supplierTemplateManage.button.edit' })}
|
||||
</Button>
|
||||
)}
|
||||
<Button type="link" onClick={() => handleView(record)}>
|
||||
{intl.formatMessage({ id: 'supplierTemplateManage.button.view' })}
|
||||
</Button>
|
||||
@ -248,17 +234,39 @@ const SupplierTemplateManage: React.FC = () => {
|
||||
layout="inline"
|
||||
className="filter-form"
|
||||
>
|
||||
<Form.Item name="templateName" label={intl.formatMessage({ id: 'supplierTemplateManage.column.templateName' })}>
|
||||
<Input placeholder={intl.formatMessage({ id: 'supplierTemplateManage.placeholder.templateName' })} allowClear />
|
||||
<Form.Item
|
||||
name="templateName"
|
||||
label={intl.formatMessage({ id: 'supplierTemplateManage.column.templateName' })}
|
||||
>
|
||||
<Input
|
||||
placeholder={intl.formatMessage({
|
||||
id: 'supplierTemplateManage.placeholder.templateName',
|
||||
})}
|
||||
allowClear
|
||||
/>
|
||||
</Form.Item>
|
||||
<Form.Item name="tenantName" label={intl.formatMessage({ id: 'supplierTemplateManage.column.tenantName' })}>
|
||||
<Select placeholder={intl.formatMessage({ id: 'supplierTemplateManage.placeholder.tenantName' })} allowClear style={{ width: 200 }}>
|
||||
{companyOptions.map(option => (
|
||||
<Option key={option.value} value={option.value}>{option.label}</Option>
|
||||
<Form.Item
|
||||
name="tenantName"
|
||||
label={intl.formatMessage({ id: 'supplierTemplateManage.column.tenantName' })}
|
||||
>
|
||||
<Select
|
||||
placeholder={intl.formatMessage({
|
||||
id: 'supplierTemplateManage.placeholder.tenantName',
|
||||
})}
|
||||
allowClear
|
||||
style={{ width: 200 }}
|
||||
>
|
||||
{companyOptions.map((option) => (
|
||||
<Option key={option.value} value={option.value}>
|
||||
{option.label}
|
||||
</Option>
|
||||
))}
|
||||
</Select>
|
||||
</Form.Item>
|
||||
<Form.Item name="categoryId" label={intl.formatMessage({ id: 'supplierTemplateManage.column.category' })}>
|
||||
<Form.Item
|
||||
name="categoryId"
|
||||
label={intl.formatMessage({ id: 'supplierTemplateManage.column.category' })}
|
||||
>
|
||||
<CategorySelector multiple={false} style={{ width: 200 }} />
|
||||
</Form.Item>
|
||||
<Form.Item className="filter-btns">
|
||||
|
@ -17,7 +17,7 @@ import {
|
||||
Modal,
|
||||
} from 'antd';
|
||||
import { history, useLocation, useIntl, connect } from 'umi';
|
||||
import type { Dispatch,ConnectProps } from 'umi';
|
||||
import type { Dispatch, ConnectProps } from 'umi';
|
||||
import type { BreadcrumbState } from '@/models/breadcrumb';
|
||||
import { ArrowLeftOutlined, SaveOutlined, ExclamationCircleOutlined } from '@ant-design/icons';
|
||||
import EvaluateTemplateTable from '@/components/EvaluateTemplateTable';
|
||||
@ -27,13 +27,13 @@ import {
|
||||
CategoryLimitationTypeText,
|
||||
TemplateStatus,
|
||||
TemplateStatusText,
|
||||
IndicatorAddOption
|
||||
IndicatorAddOption,
|
||||
} from '@/dicts/supplierTemplateDict';
|
||||
import {
|
||||
getTemplateDetail,
|
||||
getAllTemplates,
|
||||
updateTemplate,
|
||||
addTemplate
|
||||
addTemplate,
|
||||
} from '@/servers/api/supplierEvaluate';
|
||||
import styles from './supplierTemplateManage.less';
|
||||
|
||||
@ -70,14 +70,14 @@ const SupplierTemplateManageAdd: React.FC<PageProps> = ({ breadcrumb, dispatch }
|
||||
const [loading, setLoading] = useState<boolean>(false);
|
||||
const [templateData, setTemplateData] = useState<SupplierTemplateManage.IndicatorSt[]>([]);
|
||||
const [isEdit, setIsEdit] = useState<boolean>(false);
|
||||
const [templateDetail, setTemplateDetail] = useState<SupplierTemplateManage.TemplateDetailResponse['data']>();
|
||||
const [templateDetail, setTemplateDetail] =
|
||||
useState<SupplierTemplateManage.TemplateDetailResponse['data']>();
|
||||
const [templateList, setTemplateList] = useState<SupplierTemplateManage.TemplateItem[]>([]);
|
||||
|
||||
// 添加控制开关的状态
|
||||
const [indicatorStMore, setIndicatorStMore] = useState<string>(IndicatorAddOption.CAN_ADD);
|
||||
const [indicatorNdMore, setIndicatorNdMore] = useState<string>(IndicatorAddOption.CAN_ADD);
|
||||
|
||||
|
||||
// 获取路由传递的数据
|
||||
const location = useLocation<LocationState>();
|
||||
|
||||
@ -88,16 +88,26 @@ const SupplierTemplateManageAdd: React.FC<PageProps> = ({ breadcrumb, dispatch }
|
||||
if (res.success && res.data) {
|
||||
// 如果是修改,需要过滤掉自己
|
||||
if (location.state?.editData) {
|
||||
setTemplateList(res.data.filter((template: SupplierTemplateManage.TemplateItem) => template.id !== location.state.editData?.id));
|
||||
setTemplateList(
|
||||
res.data.filter(
|
||||
(template: SupplierTemplateManage.TemplateItem) =>
|
||||
template.id !== location.state.editData?.id,
|
||||
),
|
||||
);
|
||||
} else {
|
||||
setTemplateList(res.data);
|
||||
}
|
||||
} else {
|
||||
message.error(intl.formatMessage({ id: 'supplierTemplateManage.message.getTemplateListFailed' }) || res.message);
|
||||
message.error(
|
||||
intl.formatMessage({ id: 'supplierTemplateManage.message.getTemplateListFailed' }) ||
|
||||
res.message,
|
||||
);
|
||||
}
|
||||
} catch (error) {
|
||||
console.error('获取模板列表失败:', error);
|
||||
message.error(intl.formatMessage({ id: 'supplierTemplateManage.message.getTemplateListFailed' }));
|
||||
message.error(
|
||||
intl.formatMessage({ id: 'supplierTemplateManage.message.getTemplateListFailed' }),
|
||||
);
|
||||
}
|
||||
};
|
||||
|
||||
@ -115,7 +125,7 @@ const SupplierTemplateManageAdd: React.FC<PageProps> = ({ breadcrumb, dispatch }
|
||||
categoryLimitation: res.data.categoryLimitation,
|
||||
categoryId: res.data.categoryId,
|
||||
status: res.data.status,
|
||||
copyTemplateId: res.data.templateType,
|
||||
copyTemplateId: res.data.copyTemplateId,
|
||||
indicatorStMore: res.data.indicatorStMore || IndicatorAddOption.CAN_ADD,
|
||||
indicatorNdMore: res.data.indicatorNdMore || IndicatorAddOption.CAN_ADD,
|
||||
});
|
||||
@ -125,7 +135,10 @@ const SupplierTemplateManageAdd: React.FC<PageProps> = ({ breadcrumb, dispatch }
|
||||
setTemplateData(res.data.indicatorStList as SupplierTemplateManage.IndicatorSt[]);
|
||||
}
|
||||
} else {
|
||||
message.error(intl.formatMessage({ id: 'supplierTemplateManage.message.getDetailFailed' }) || res.message);
|
||||
message.error(
|
||||
intl.formatMessage({ id: 'supplierTemplateManage.message.getDetailFailed' }) ||
|
||||
res.message,
|
||||
);
|
||||
}
|
||||
} catch (error) {
|
||||
console.error('获取模板详情失败:', error);
|
||||
@ -138,7 +151,7 @@ const SupplierTemplateManageAdd: React.FC<PageProps> = ({ breadcrumb, dispatch }
|
||||
if (location.state?.editData?.id && dispatch) {
|
||||
dispatch({
|
||||
type: 'breadcrumb/updateBreadcrumbName',
|
||||
payload: intl.formatMessage({ id: "supplierTemplateManage.edit.title" }),
|
||||
payload: intl.formatMessage({ id: 'supplierTemplateManage.edit.title' }),
|
||||
});
|
||||
}
|
||||
return () => {
|
||||
@ -170,13 +183,13 @@ const SupplierTemplateManageAdd: React.FC<PageProps> = ({ breadcrumb, dispatch }
|
||||
// 提交数据的函数
|
||||
const handleDataSubmit = async (values: FormValues) => {
|
||||
// 准备提交数据
|
||||
const selectedTemplate = templateList.find(template => template.id === values.copyTemplateId);
|
||||
const selectedTemplate = templateList.find((template) => template.id === values.copyTemplateId);
|
||||
const dataToSubmit: SupplierTemplateManage.TemplateUpdateRequest = {
|
||||
...values,
|
||||
templateType: selectedTemplate?.templateType || '',
|
||||
indicatorStList: templateData,
|
||||
indicatorTypeMore: IndicatorAddOption.CAN_ADD,
|
||||
status: parseInt(values.status, 10)
|
||||
status: parseInt(values.status, 10),
|
||||
} as unknown as SupplierTemplateManage.TemplateUpdateRequest;
|
||||
|
||||
// 如果是编辑模式,添加ID
|
||||
@ -191,20 +204,25 @@ const SupplierTemplateManageAdd: React.FC<PageProps> = ({ breadcrumb, dispatch }
|
||||
if (isEdit) {
|
||||
res = await updateTemplate(dataToSubmit);
|
||||
} else {
|
||||
res = await addTemplate(dataToSubmit as unknown as SupplierTemplateManage.TemplateAddRequest);
|
||||
res = await addTemplate(
|
||||
dataToSubmit as unknown as SupplierTemplateManage.TemplateAddRequest,
|
||||
);
|
||||
}
|
||||
|
||||
if (res.success) {
|
||||
message.success(isEdit
|
||||
? intl.formatMessage({ id: 'supplierTemplateManage.message.updateSuccess' })
|
||||
: intl.formatMessage({ id: 'supplierTemplateManage.message.saveSuccess' })
|
||||
message.success(
|
||||
isEdit
|
||||
? intl.formatMessage({ id: 'supplierTemplateManage.message.updateSuccess' })
|
||||
: intl.formatMessage({ id: 'supplierTemplateManage.message.saveSuccess' }),
|
||||
);
|
||||
history.goBack();
|
||||
} else {
|
||||
message.error(res.message || (isEdit
|
||||
? intl.formatMessage({ id: 'supplierTemplateManage.message.updateFailed' })
|
||||
: intl.formatMessage({ id: 'supplierTemplateManage.message.saveFailed' })
|
||||
));
|
||||
message.error(
|
||||
res.message ||
|
||||
(isEdit
|
||||
? intl.formatMessage({ id: 'supplierTemplateManage.message.updateFailed' })
|
||||
: intl.formatMessage({ id: 'supplierTemplateManage.message.saveFailed' })),
|
||||
);
|
||||
}
|
||||
} catch (error) {
|
||||
console.error('提交失败:', error);
|
||||
@ -261,14 +279,11 @@ const SupplierTemplateManageAdd: React.FC<PageProps> = ({ breadcrumb, dispatch }
|
||||
break;
|
||||
}
|
||||
};
|
||||
|
||||
// 处理模板选择
|
||||
const handleTemplateSelect = async (templateId: string) => {
|
||||
// 如果是新建模式,并且选择了模板,获取模板详情作为基础数据
|
||||
const searchTemplateInfoCopyToTemplateData = async (templateId: string) => {
|
||||
// 要求,如果选择模板时,需读取模板中的 indicatorStMore(一级指标是否可编辑) 和 indicatorNdMore(二级指标是否可编辑) 的值
|
||||
// 来动态设置 EvaluateTemplateTable 组件的value(templateData) 中的disable属性
|
||||
// 注意 当一级指标禁用时,需要判断指标类型是通用类型的才禁用,其他类型的指标不进行禁用
|
||||
if (!isEdit && templateId) {
|
||||
if (templateId) {
|
||||
try {
|
||||
setLoading(true);
|
||||
const res = await getTemplateDetail(templateId);
|
||||
@ -281,23 +296,30 @@ const SupplierTemplateManageAdd: React.FC<PageProps> = ({ breadcrumb, dispatch }
|
||||
// 只复制指标数据,不复制基础信息
|
||||
if (res.data.indicatorStList && res.data.indicatorStList.length > 0) {
|
||||
// 复制模板数据,但清除ID以创建新记录
|
||||
const copiedIndicatorStList = JSON.parse(JSON.stringify(res.data.indicatorStList)).map((stItem: SupplierTemplateManage.IndicatorSt) => {
|
||||
// 通用类型指标禁用,其他类型指标不禁用 (如果当前是true 表示已禁用, 需要同时满足当前指标类型是通用类型)
|
||||
stItem.disabled = indicatorStMoreStatus && stItem.indicatorType === "generalType";
|
||||
// 删除ID而不是设为undefined
|
||||
// delete stItem.id;
|
||||
stItem.indicatorNdList = stItem.indicatorNdList.map((ndItem: SupplierTemplateManage.IndicatorNd) => {
|
||||
ndItem.disabled = indicatorNdMoreStatus
|
||||
// delete ndItem.id;
|
||||
return ndItem;
|
||||
});
|
||||
return stItem;
|
||||
});
|
||||
const copiedIndicatorStList = JSON.parse(JSON.stringify(res.data.indicatorStList)).map(
|
||||
(stItem: SupplierTemplateManage.IndicatorSt) => {
|
||||
// 通用类型指标禁用,其他类型指标不禁用 (如果当前是true 表示已禁用, 需要同时满足当前指标类型是通用类型)
|
||||
stItem.disabled = indicatorStMoreStatus && stItem.indicatorType === 'generalType';
|
||||
// 删除ID而不是设为undefined
|
||||
// delete stItem.id;
|
||||
stItem.indicatorNdList = stItem.indicatorNdList.map(
|
||||
(ndItem: SupplierTemplateManage.IndicatorNd) => {
|
||||
ndItem.disabled = indicatorNdMoreStatus;
|
||||
// delete ndItem.id;
|
||||
return ndItem;
|
||||
},
|
||||
);
|
||||
return stItem;
|
||||
},
|
||||
);
|
||||
|
||||
setTemplateData(copiedIndicatorStList);
|
||||
}
|
||||
} else {
|
||||
message.error(intl.formatMessage({ id: 'supplierTemplateManage.message.getDetailFailed' }) || res.message);
|
||||
message.error(
|
||||
intl.formatMessage({ id: 'supplierTemplateManage.message.getDetailFailed' }) ||
|
||||
res.message,
|
||||
);
|
||||
}
|
||||
} catch (error) {
|
||||
console.error('获取模板详情失败:', error);
|
||||
@ -307,175 +329,247 @@ const SupplierTemplateManageAdd: React.FC<PageProps> = ({ breadcrumb, dispatch }
|
||||
}
|
||||
}
|
||||
};
|
||||
// 处理模板选择
|
||||
const handleTemplateSelect = async (templateId: string) => {
|
||||
if (isEdit) {
|
||||
// 如果是编辑模式,需要增加弹出提示
|
||||
// 提示内容,切换模板会覆盖当前数据,是否继续
|
||||
confirm({
|
||||
title: intl.formatMessage({ id: 'supplierTemplateManage.confirm.switchTemplate.title' }),
|
||||
content: intl.formatMessage({
|
||||
id: 'supplierTemplateManage.confirm.switchTemplate.content',
|
||||
}),
|
||||
okText: intl.formatMessage({ id: 'supplierTemplateManage.confirm.switchTemplate.ok' }),
|
||||
cancelText: intl.formatMessage({
|
||||
id: 'supplierTemplateManage.confirm.switchTemplate.cancel',
|
||||
}),
|
||||
onOk: () => {
|
||||
searchTemplateInfoCopyToTemplateData(templateId);
|
||||
},
|
||||
onCancel: () => {
|
||||
// 取消选择 ,将select还原回去
|
||||
form.setFieldsValue({
|
||||
copyTemplateId: templateDetail?.copyTemplateId,
|
||||
});
|
||||
},
|
||||
});
|
||||
} else {
|
||||
searchTemplateInfoCopyToTemplateData(templateId);
|
||||
}
|
||||
};
|
||||
|
||||
return (
|
||||
<div className="common-container">
|
||||
<div className={styles.pageHeader}>
|
||||
<Title level={4} style={{ margin: 0 }}>
|
||||
{isEdit
|
||||
? intl.formatMessage({ id: 'supplierTemplateManage.edit.title' })
|
||||
: intl.formatMessage({ id: 'supplierTemplateManage.add.title' })
|
||||
}
|
||||
</Title>
|
||||
<Button type="link" icon={<ArrowLeftOutlined />} onClick={handleBack}>
|
||||
{intl.formatMessage({ id: 'supplierTemplateManage.button.back' })}
|
||||
</Button>
|
||||
<div className={styles.pageHeader}>
|
||||
<Title level={4} style={{ margin: 0 }}>
|
||||
{isEdit
|
||||
? intl.formatMessage({ id: 'supplierTemplateManage.edit.title' })
|
||||
: intl.formatMessage({ id: 'supplierTemplateManage.add.title' })}
|
||||
</Title>
|
||||
<Button type="link" icon={<ArrowLeftOutlined />} onClick={handleBack}>
|
||||
{intl.formatMessage({ id: 'supplierTemplateManage.button.back' })}
|
||||
</Button>
|
||||
</div>
|
||||
|
||||
<Form<FormValues>
|
||||
form={form}
|
||||
onFinish={handleSubmit}
|
||||
initialValues={{
|
||||
categoryLimitation: CategoryLimitationType.UNIVERSAL,
|
||||
status: TemplateStatus.DRAFT,
|
||||
indicatorStMore: IndicatorAddOption.CAN_ADD,
|
||||
indicatorNdMore: IndicatorAddOption.CAN_ADD,
|
||||
}}
|
||||
labelCol={{ span: 7 }}
|
||||
wrapperCol={{ span: 17 }}
|
||||
>
|
||||
<Spin spinning={loading}>
|
||||
<Card
|
||||
title={intl.formatMessage({ id: 'supplierTemplateManage.card.basicInfo' })}
|
||||
bordered={false}
|
||||
className={styles.innerCard}
|
||||
>
|
||||
<Row gutter={24}>
|
||||
<Col span={8}>
|
||||
<Form.Item
|
||||
label={intl.formatMessage({ id: 'supplierTemplateManage.form.templateName' })}
|
||||
name="templateName"
|
||||
rules={[
|
||||
{
|
||||
required: true,
|
||||
message: intl.formatMessage({
|
||||
id: 'supplierTemplateManage.rule.templateName',
|
||||
}),
|
||||
},
|
||||
]}
|
||||
>
|
||||
<Input
|
||||
placeholder={intl.formatMessage({
|
||||
id: 'supplierTemplateManage.placeholder.templateName',
|
||||
})}
|
||||
maxLength={50}
|
||||
/>
|
||||
</Form.Item>
|
||||
</Col>
|
||||
<Col span={8}>
|
||||
<Form.Item
|
||||
label={intl.formatMessage({
|
||||
id: 'supplierTemplateManage.form.categoryLimitation',
|
||||
})}
|
||||
name="categoryLimitation"
|
||||
rules={[
|
||||
{
|
||||
required: true,
|
||||
message: intl.formatMessage({
|
||||
id: 'supplierTemplateManage.rule.categoryLimitation',
|
||||
}),
|
||||
},
|
||||
]}
|
||||
>
|
||||
<Radio.Group>
|
||||
<Radio value={CategoryLimitationType.UNIVERSAL}>
|
||||
{CategoryLimitationTypeText[CategoryLimitationType.UNIVERSAL]}
|
||||
</Radio>
|
||||
<Radio value={CategoryLimitationType.LIMITED}>
|
||||
{CategoryLimitationTypeText[CategoryLimitationType.LIMITED]}
|
||||
</Radio>
|
||||
</Radio.Group>
|
||||
</Form.Item>
|
||||
</Col>
|
||||
<Col span={8}>
|
||||
<Form.Item
|
||||
noStyle
|
||||
shouldUpdate={(prevValues: FormValues, currentValues: FormValues) =>
|
||||
prevValues.categoryLimitation !== currentValues.categoryLimitation
|
||||
}
|
||||
>
|
||||
{({ getFieldValue }) => {
|
||||
const categoryLimitation = getFieldValue('categoryLimitation');
|
||||
return categoryLimitation === CategoryLimitationType.LIMITED ? (
|
||||
<Form.Item
|
||||
label={intl.formatMessage({
|
||||
id: 'supplierTemplateManage.form.selectCategory',
|
||||
})}
|
||||
name="categoryId"
|
||||
rules={[
|
||||
{
|
||||
required: true,
|
||||
message: intl.formatMessage({
|
||||
id: 'supplierTemplateManage.rule.category',
|
||||
}),
|
||||
},
|
||||
]}
|
||||
>
|
||||
<CategorySelector value={categoryLimitation} multiple={false} />
|
||||
</Form.Item>
|
||||
) : null;
|
||||
}}
|
||||
</Form.Item>
|
||||
</Col>
|
||||
</Row>
|
||||
|
||||
<Row gutter={24}>
|
||||
<Col span={8}>
|
||||
<Form.Item
|
||||
label={intl.formatMessage({ id: 'supplierTemplateManage.form.selectTemplate' })}
|
||||
name="copyTemplateId"
|
||||
>
|
||||
<Select
|
||||
placeholder={intl.formatMessage({
|
||||
id: 'supplierTemplateManage.form.selectTemplate',
|
||||
})}
|
||||
loading={templateList.length === 0}
|
||||
onSelect={handleTemplateSelect}
|
||||
>
|
||||
{templateList.map((template) =>
|
||||
template.id ? (
|
||||
<Option key={template.id} value={template.id}>
|
||||
{template.templateName}
|
||||
</Option>
|
||||
) : null,
|
||||
)}
|
||||
</Select>
|
||||
</Form.Item>
|
||||
</Col>
|
||||
<Col span={8}>
|
||||
<Form.Item
|
||||
label={intl.formatMessage({ id: 'supplierTemplateManage.form.status' })}
|
||||
name="status"
|
||||
rules={[{ required: true }]}
|
||||
>
|
||||
<Radio.Group>
|
||||
<Radio value={TemplateStatus.DRAFT}>
|
||||
{TemplateStatusText[TemplateStatus.DRAFT]}
|
||||
</Radio>
|
||||
<Radio value={TemplateStatus.ENABLED}>
|
||||
{TemplateStatusText[TemplateStatus.ENABLED]}
|
||||
</Radio>
|
||||
<Radio value={TemplateStatus.DISABLED}>
|
||||
{TemplateStatusText[TemplateStatus.DISABLED]}
|
||||
</Radio>
|
||||
</Radio.Group>
|
||||
</Form.Item>
|
||||
</Col>
|
||||
</Row>
|
||||
|
||||
<Row gutter={24}>
|
||||
<Col span={8}>
|
||||
<Form.Item
|
||||
label={intl.formatMessage({ id: 'supplierTemplateManage.form.indicatorStMore' })}
|
||||
name="indicatorStMore"
|
||||
valuePropName="checked"
|
||||
getValueProps={(value) => ({ checked: value === IndicatorAddOption.CAN_ADD })}
|
||||
>
|
||||
<Switch
|
||||
checked={indicatorStMore === IndicatorAddOption.CAN_ADD}
|
||||
onChange={(checked) => handleSwitchChange('indicatorStMore', checked)}
|
||||
/>
|
||||
</Form.Item>
|
||||
</Col>
|
||||
<Col span={8}>
|
||||
<Form.Item
|
||||
label={intl.formatMessage({ id: 'supplierTemplateManage.form.indicatorNdMore' })}
|
||||
name="indicatorNdMore"
|
||||
valuePropName="checked"
|
||||
getValueProps={(value) => ({ checked: value === IndicatorAddOption.CAN_ADD })}
|
||||
>
|
||||
<Switch
|
||||
checked={indicatorNdMore === IndicatorAddOption.CAN_ADD}
|
||||
onChange={(checked) => handleSwitchChange('indicatorNdMore', checked)}
|
||||
/>
|
||||
</Form.Item>
|
||||
</Col>
|
||||
</Row>
|
||||
</Card>
|
||||
|
||||
<Divider />
|
||||
|
||||
<Card
|
||||
title={intl.formatMessage({ id: 'supplierTemplateManage.card.indicatorInfo' })}
|
||||
bordered={false}
|
||||
className={styles.innerCard}
|
||||
>
|
||||
<EvaluateTemplateTable onChange={handleTemplateDataChange} value={templateData} />
|
||||
</Card>
|
||||
</Spin>
|
||||
|
||||
<div className={styles.formActions}>
|
||||
<Space>
|
||||
<Button onClick={handleBack}>
|
||||
{intl.formatMessage({ id: 'supplierTemplateManage.button.cancel' })}
|
||||
</Button>
|
||||
<Button type="primary" htmlType="submit" loading={loading} icon={<SaveOutlined />}>
|
||||
{isEdit
|
||||
? intl.formatMessage({ id: 'supplierTemplateManage.button.update' })
|
||||
: intl.formatMessage({ id: 'supplierTemplateManage.button.save' })}
|
||||
</Button>
|
||||
</Space>
|
||||
</div>
|
||||
|
||||
<Form<FormValues>
|
||||
form={form}
|
||||
onFinish={handleSubmit}
|
||||
initialValues={{
|
||||
categoryLimitation: CategoryLimitationType.UNIVERSAL,
|
||||
status: TemplateStatus.DRAFT,
|
||||
indicatorStMore: IndicatorAddOption.CAN_ADD,
|
||||
indicatorNdMore: IndicatorAddOption.CAN_ADD,
|
||||
}}
|
||||
labelCol={{ span: 7 }}
|
||||
wrapperCol={{ span: 17 }}
|
||||
>
|
||||
<Spin spinning={loading}>
|
||||
<Card title={intl.formatMessage({ id: 'supplierTemplateManage.card.basicInfo' })} bordered={false} className={styles.innerCard}>
|
||||
<Row gutter={24}>
|
||||
<Col span={8}>
|
||||
<Form.Item
|
||||
label={intl.formatMessage({ id: 'supplierTemplateManage.form.templateName' })}
|
||||
name="templateName"
|
||||
rules={[{ required: true, message: intl.formatMessage({ id: 'supplierTemplateManage.rule.templateName' }) }]}
|
||||
>
|
||||
<Input placeholder={intl.formatMessage({ id: 'supplierTemplateManage.placeholder.templateName' })} maxLength={50} />
|
||||
</Form.Item>
|
||||
</Col>
|
||||
<Col span={8}>
|
||||
<Form.Item
|
||||
label={intl.formatMessage({ id: 'supplierTemplateManage.form.categoryLimitation' })}
|
||||
name="categoryLimitation"
|
||||
rules={[{ required: true, message: intl.formatMessage({ id: 'supplierTemplateManage.rule.categoryLimitation' }) }]}
|
||||
>
|
||||
<Radio.Group>
|
||||
<Radio value={CategoryLimitationType.UNIVERSAL}>{CategoryLimitationTypeText[CategoryLimitationType.UNIVERSAL]}</Radio>
|
||||
<Radio value={CategoryLimitationType.LIMITED}>{CategoryLimitationTypeText[CategoryLimitationType.LIMITED]}</Radio>
|
||||
</Radio.Group>
|
||||
</Form.Item>
|
||||
</Col>
|
||||
<Col span={8}>
|
||||
<Form.Item
|
||||
noStyle
|
||||
shouldUpdate={(prevValues: FormValues, currentValues: FormValues) =>
|
||||
prevValues.categoryLimitation !== currentValues.categoryLimitation
|
||||
}
|
||||
>
|
||||
{({ getFieldValue }) => {
|
||||
const categoryLimitation = getFieldValue('categoryLimitation');
|
||||
return categoryLimitation === CategoryLimitationType.LIMITED ? (
|
||||
<Form.Item
|
||||
label={intl.formatMessage({ id: 'supplierTemplateManage.form.selectCategory' })}
|
||||
name="categoryId"
|
||||
rules={[{ required: true, message: intl.formatMessage({ id: 'supplierTemplateManage.rule.category' }) }]}
|
||||
>
|
||||
<CategorySelector value={categoryLimitation} multiple={false} />
|
||||
</Form.Item>
|
||||
) : null;
|
||||
}}
|
||||
</Form.Item>
|
||||
</Col>
|
||||
</Row>
|
||||
|
||||
<Row gutter={24}>
|
||||
<Col span={8}>
|
||||
<Form.Item
|
||||
label={intl.formatMessage({ id: 'supplierTemplateManage.form.selectTemplate' })}
|
||||
name="copyTemplateId"
|
||||
>
|
||||
<Select
|
||||
placeholder={intl.formatMessage({ id: 'supplierTemplateManage.form.selectTemplate' })}
|
||||
loading={templateList.length === 0}
|
||||
onSelect={handleTemplateSelect}
|
||||
>
|
||||
{templateList.map(template => (
|
||||
template.id ? (
|
||||
<Option key={template.id} value={template.id}>
|
||||
{template.templateName}
|
||||
</Option>
|
||||
) : null
|
||||
))}
|
||||
</Select>
|
||||
</Form.Item>
|
||||
</Col>
|
||||
<Col span={8}>
|
||||
<Form.Item
|
||||
label={intl.formatMessage({ id: 'supplierTemplateManage.form.status' })}
|
||||
name="status"
|
||||
rules={[{ required: true }]}
|
||||
>
|
||||
<Radio.Group>
|
||||
<Radio value={TemplateStatus.DRAFT}>{TemplateStatusText[TemplateStatus.DRAFT]}</Radio>
|
||||
<Radio value={TemplateStatus.ENABLED}>{TemplateStatusText[TemplateStatus.ENABLED]}</Radio>
|
||||
<Radio value={TemplateStatus.DISABLED}>{TemplateStatusText[TemplateStatus.DISABLED]}</Radio>
|
||||
</Radio.Group>
|
||||
</Form.Item>
|
||||
</Col>
|
||||
</Row>
|
||||
|
||||
<Row gutter={24}>
|
||||
<Col span={8}>
|
||||
<Form.Item
|
||||
label={intl.formatMessage({ id: 'supplierTemplateManage.form.indicatorStMore' })}
|
||||
name="indicatorStMore"
|
||||
valuePropName="checked"
|
||||
getValueProps={(value) => ({ checked: value === IndicatorAddOption.CAN_ADD })}
|
||||
>
|
||||
<Switch
|
||||
checked={indicatorStMore === IndicatorAddOption.CAN_ADD}
|
||||
onChange={(checked) => handleSwitchChange('indicatorStMore', checked)}
|
||||
/>
|
||||
</Form.Item>
|
||||
</Col>
|
||||
<Col span={8}>
|
||||
<Form.Item
|
||||
label={intl.formatMessage({ id: 'supplierTemplateManage.form.indicatorNdMore' })}
|
||||
name="indicatorNdMore"
|
||||
valuePropName="checked"
|
||||
getValueProps={(value) => ({ checked: value === IndicatorAddOption.CAN_ADD })}
|
||||
>
|
||||
<Switch
|
||||
checked={indicatorNdMore === IndicatorAddOption.CAN_ADD}
|
||||
onChange={(checked) => handleSwitchChange('indicatorNdMore', checked)}
|
||||
/>
|
||||
</Form.Item>
|
||||
</Col>
|
||||
</Row>
|
||||
</Card>
|
||||
|
||||
<Divider />
|
||||
|
||||
<Card title={intl.formatMessage({ id: 'supplierTemplateManage.card.indicatorInfo' })} bordered={false} className={styles.innerCard}>
|
||||
<EvaluateTemplateTable
|
||||
onChange={handleTemplateDataChange}
|
||||
value={templateData}
|
||||
/>
|
||||
</Card>
|
||||
</Spin>
|
||||
|
||||
<div className={styles.formActions}>
|
||||
<Space>
|
||||
<Button onClick={handleBack}>
|
||||
{intl.formatMessage({ id: 'supplierTemplateManage.button.cancel' })}
|
||||
</Button>
|
||||
<Button type="primary" htmlType="submit" loading={loading} icon={<SaveOutlined />}>
|
||||
{isEdit
|
||||
? intl.formatMessage({ id: 'supplierTemplateManage.button.update' })
|
||||
: intl.formatMessage({ id: 'supplierTemplateManage.button.save' })
|
||||
}
|
||||
</Button>
|
||||
</Space>
|
||||
</div>
|
||||
</Form>
|
||||
</Form>
|
||||
</div>
|
||||
);
|
||||
};
|
||||
|
||||
|
||||
// export default SupplierTemplateManageAdd;
|
||||
// 将dva model中的状态映射到组件props
|
||||
export default connect(({ breadcrumb }: { breadcrumb: BreadcrumbState }) => ({
|
||||
|
Reference in New Issue
Block a user