setEnNameDia.vue 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312
  1. <template>
  2. <el-dialog
  3. :title="this.$t('Chart.chart_en_btn')"
  4. :visible.sync="isOpenDialog"
  5. :close-on-click-modal="false"
  6. :modal-append-to-body='false'
  7. @close="cancel"
  8. custom-class="set-en-dialog"
  9. width="800px"
  10. v-dialogDrag
  11. >
  12. <el-form v-if="cType=='chart'" style="padding:0 40px" label-width="140px">
  13. <!-- 截面散点图 -->
  14. <div class="set-en-name-box" v-if="chartType===10">
  15. <el-collapse v-model="activeNames" class="sectionScatter-collapse">
  16. <el-collapse-item :title="$t('Chart.Detail.chart_name')" :name="0" >
  17. <ul class="section-ul">
  18. <li v-if="copyFormData.chartInfo.length">
  19. <div class="ch-name">{{$t('Chart.Detail.chart_name')}}:{{copyFormData.chartInfo[0].value}}</div>
  20. <el-input v-model="copyFormData.chartInfo[1].value" :placeholder="$t('Chart.InputHolderAll.input_en_name')" style="width: 600px;"/>
  21. </li>
  22. <li>
  23. <div class="ch-name"><!-- X轴名称: -->{{$t('Chart.Detail.x_name')}}:{{updateInfo.XName}}</div>
  24. <el-input v-model="updateInfo.XNameEn" :placeholder="$t('Chart.InputHolderAll.input_common',{label:$t('Chart.Detail.x_en_name')})" ></el-input>
  25. </li>
  26. <li>
  27. <div class="ch-name"><!-- X轴单位 -->{{$t('Chart.Detail.x_unit')}}:{{updateInfo.XUnitName}}</div>
  28. <el-input v-model="updateInfo.XUnitNameEn" :placeholder="$t('Chart.InputHolderAll.input_en_unit')" ></el-input>
  29. </li>
  30. <li>
  31. <div class="ch-name"><!-- Y轴名称: -->{{$t('Chart.Detail.y_name')}}:{{updateInfo.YName}}</div>
  32. <el-input v-model="updateInfo.YNameEn" :placeholder="$t('Chart.InputHolderAll.input_common',{label:$t('Chart.Detail.y_en_name')})" ></el-input>
  33. </li>
  34. <li>
  35. <div class="ch-name"><!-- Y轴单位 -->{{$t('Chart.Detail.y_unit')}}:{{updateInfo.YUnitName}}</div>
  36. <el-input v-model="updateInfo.YUnitNameEn" :placeholder="$t('Chart.InputHolderAll.input_en_unit')" ></el-input>
  37. </li>
  38. </ul>
  39. </el-collapse-item>
  40. <!-- 系列标签 -->
  41. <el-collapse-item :title="$t('EtaChartPage.label_tag_serie')" :name="1" v-if="updateInfo.SeriesList">
  42. <ul class="section-ul">
  43. <li v-for="(item,index) in updateInfo.SeriesList" :key="index">
  44. <div class="ch-name">{{$t('Chart.Detail.serie_name')}}{{index+1}}:{{item.Name}}</div>
  45. <el-input v-model="item.NameEn" :placeholder="$t('Chart.InputHolderAll.input_en_label')" ></el-input>
  46. </li>
  47. </ul>
  48. <ul class="section-ul">
  49. <li v-for="(tag,index) in updateInfo.SeriesList[0].EdbInfoList" :key="index">
  50. <div class="ch-name">{{$t('Chart.Detail.tag_name')}}{{index+1}}:{{tag.Name}}</div>
  51. <el-input v-model="tag.NameEn" :placeholder="$t('Chart.InputHolderAll.input_en_label')" ></el-input>
  52. </li>
  53. </ul>
  54. </el-collapse-item>
  55. <!-- 指标英文 -->
  56. <el-collapse-item :title="$t('Edb.Detail.e_name')" :name="2">
  57. <ul class="section-ul">
  58. <li v-for="(item,index) in fromEdbList" :key="index">
  59. <div class="ch-name text_oneLine">{{item.EdbName}}</div>
  60. <el-input v-model="item.EdbNameEn" :placeholder="$t('Chart.InputHolderAll.input_en_label')" ></el-input>
  61. </li>
  62. </ul>
  63. </el-collapse-item>
  64. </el-collapse>
  65. </div>
  66. <!-- 普通图 -->
  67. <div class="set-en-name-box" v-else>
  68. <el-form-item :label="item.label+':'" :prop="item.key" v-for="item in copyFormData.chartInfo" :key="item.key">
  69. <span v-show="item.notEdit">{{item.value}}</span>
  70. <el-input v-show="!item.notEdit" v-model="item.value" :placeholder="item.placeholder" ></el-input>
  71. </el-form-item>
  72. <el-collapse v-model="activeNames" v-if="copyFormData.chartsList.length">
  73. <el-collapse-item :title="item[0].value" :name="index" v-for="(item,index) in copyFormData.chartsList" :key="index">
  74. <el-form-item :label="it.label+':'" :prop="it.key" v-for="(it,i) in item" :key="it.key">
  75. <span v-show="it.notEdit">{{it.value}}</span>
  76. <el-input v-show="!it.notEdit" v-model="it.value" :placeholder="it.placeholder" ></el-input>
  77. </el-form-item>
  78. </el-collapse-item>
  79. </el-collapse>
  80. </div>
  81. </el-form>
  82. <el-form v-else label-width="120px" >
  83. <el-form-item :label="item.label+':'" :prop="item.key" v-for="item in copyFormData" :key="item.key">
  84. <span v-show="item.notEdit">{{item.value}}</span>
  85. <el-input v-show="!item.notEdit" v-model="item.value" :placeholder="item.placeholder" style="width: 100%;"></el-input>
  86. </el-form-item>
  87. </el-form>
  88. <div class="btn-bottom">
  89. <el-button type="primary" @click="saveEnName" style="margin-right:20px"><!-- 确定 -->{{$t('Dialog.confirm_btn')}}</el-button>
  90. <el-button @click="cancel"><!-- 取消 -->{{$t('Dialog.cancel_btn')}}</el-button>
  91. </div>
  92. </el-dialog>
  93. </template>
  94. <script>
  95. export default {
  96. name:"setEnName",
  97. data() {
  98. return {
  99. enNameData:{
  100. ChartInfoId:'',
  101. ChartNameEn:'',
  102. ChartEdbInfoList:[
  103. ]
  104. },
  105. copyFormData:{
  106. chartInfo:[],
  107. chartsList:[]
  108. },
  109. activeNames: [0],
  110. fromEdbList: [],
  111. updateInfo: {}
  112. }
  113. },
  114. props:{
  115. cType:{
  116. type:String,
  117. default:'chart'
  118. },
  119. isOpenDialog:{
  120. type:Boolean,
  121. required:true,
  122. default:false
  123. },
  124. formData:{
  125. type:Array,
  126. required:true,
  127. default:[]
  128. },
  129. chartType: {
  130. type: Number
  131. },
  132. datainfo: {
  133. default: null
  134. },
  135. edblist: {
  136. default: () => []
  137. }
  138. },
  139. watch:{
  140. isOpenDialog(newVal){
  141. // 默认展开第一项
  142. if(newVal){
  143. this.activeNames=[0]
  144. this.copyFormData = _.cloneDeep(this.formData);
  145. this.fromEdbList = _.cloneDeep(this.edblist);
  146. this.updateInfo = _.cloneDeep(this.datainfo);
  147. }
  148. }
  149. },
  150. methods:{
  151. cancel(){
  152. this.copyFormData={
  153. chartInfo:[],
  154. chartsList:[]
  155. }
  156. this.$emit('cancel')
  157. },
  158. /* 截面散点图设置英文 */
  159. setSectionScatterEn(){
  160. let ChartEdbInfoList = this.fromEdbList.map( _ => ({
  161. EdbInfoId: _.EdbInfoId,
  162. EdbNameEn: _.EdbNameEn,
  163. UnitEn: _.UnitEn
  164. }))
  165. this.updateInfo.SeriesList.forEach((item,index) => {
  166. if(index) {
  167. item.EdbInfoList.forEach((edb,edb_index) => {
  168. const {NameEn} = this.updateInfo.SeriesList[0].EdbInfoList[edb_index];
  169. edb.NameEn= NameEn;
  170. })
  171. }
  172. })
  173. let ExtraConfig = JSON.stringify(this.updateInfo);
  174. let params = {
  175. ChartInfoId: this.copyFormData.chartInfo[1].id,
  176. ChartNameEn: this.copyFormData.chartInfo[1].value.trim(),
  177. ChartEdbInfoList,
  178. ExtraConfig
  179. }
  180. this.$emit('updateEnName',params)
  181. },
  182. /* 跨品种分析参数设置 */
  183. setCrossVarietyEn() {
  184. console.log(this.copyFormData)
  185. const { chartInfo,chartsList } = this.copyFormData;
  186. let params = {
  187. ChartInfoId: chartInfo[1].id,
  188. ChartNameEn: chartInfo[1].value.trim(),
  189. TagList: [
  190. { ChartTagId: chartInfo[3].id,TagNameEn: chartInfo[3].value },
  191. { ChartTagId: chartInfo[5].id,TagNameEn: chartInfo[5].value }
  192. ],
  193. VarietyList: chartsList.map(_ => ({
  194. ChartVarietyId: _[1].id,
  195. VarietyNameEn: _[1].value
  196. }))
  197. }
  198. this.$emit('updateEnName',params)
  199. },
  200. saveEnName(){
  201. if(this.cType === 'chart'&&this.chartType === 10) return this.setSectionScatterEn();
  202. else if(this.cType === 'chart'&&this.copyFormData.chartInfo[0].source === 10) return this.setCrossVarietyEn();
  203. if(JSON.stringify(this.copyFormData) === JSON.stringify(this.formData)){
  204. // 没有修改过
  205. this.$emit('cancel')
  206. return
  207. }
  208. console.log(this.cType);
  209. if(this.cType == 'chart'){
  210. // 表格
  211. this.enNameData.ChartInfoId = this.copyFormData.chartInfo[1].id // 表格ID
  212. this.enNameData.ChartNameEn = this.copyFormData.chartInfo[1].value.trim() // 表格英文名称
  213. if(this.copyFormData.chartInfo[3]) {
  214. if(this.copyFormData.chartInfo[3].key==='FutureGoodNameEn') {
  215. this.enNameData.FutureGoodNameEn = this.copyFormData.chartInfo[3].value.trim() // 期货英文名称
  216. }else if(this.copyFormData.chartInfo[3].key==='ProfitNameEn') {
  217. this.enNameData.ProfitNameEn = this.copyFormData.chartInfo[3].value.trim() // 利润英文名称
  218. }
  219. }
  220. let chartEdbInfoListTem=[]
  221. this.copyFormData.chartsList.map((item,index)=>{
  222. let params ={}
  223. params.EdbInfoId = item[0].id
  224. item.filter(it => !it.notEdit) .map((it,i)=>{
  225. params[it.key] = it.value
  226. })
  227. chartEdbInfoListTem.push(params)
  228. })
  229. this.enNameData.ChartEdbInfoList=chartEdbInfoListTem
  230. this.$emit('updateEnName',this.enNameData)
  231. }else{
  232. // 指标库
  233. let params={}
  234. this.copyFormData.filter(it => !it.notEdit).map(item => {
  235. params[item.key] = item.value.trim()
  236. })
  237. // console.log(params);
  238. this.$emit('updateEnName',params)
  239. }
  240. }
  241. }
  242. }
  243. </script>
  244. <style lang="scss">
  245. .set-en-dialog {
  246. .el-dialog__body {
  247. max-height:600px;
  248. overflow-y:auto;
  249. }
  250. }
  251. .set-en-name-box{
  252. .el-collapse-item__header{
  253. background-color:#DCDFE6;
  254. padding-left:8px;
  255. font-size: 16px;
  256. font-weight: 400;
  257. color: #333333;
  258. margin-bottom:0;
  259. display: flex;
  260. justify-content: space-between;
  261. align-items: center;
  262. // text-overflow: ellipsis;
  263. // white-space: nowrap;
  264. overflow: hidden;
  265. line-height: inherit;
  266. .el-collapse-item__arrow{
  267. margin-left: 12px;
  268. }
  269. }
  270. .el-input{
  271. width: 100%;
  272. }
  273. .el-collapse-item__content{
  274. padding:18px 8px 0 8px;
  275. }
  276. }
  277. </style>
  278. <style scoped lang="scss">
  279. .section-ul {
  280. display: flex;
  281. justify-content: space-between;
  282. flex-wrap: wrap;
  283. li {
  284. margin-bottom: 20px;
  285. .ch-name {
  286. margin-bottom: 10px;
  287. width: 250px;
  288. }
  289. .el-input { min-width: 240px;}
  290. }
  291. }
  292. .btn-bottom {
  293. display: flex;
  294. margin: 40px 0;
  295. justify-content: center;
  296. }
  297. </style>