editMould.vue 6.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207
  1. <script setup lang="ts">
  2. import { ref, reactive, watch } from "vue";
  3. import { ElMessageBox, ElMessage } from "element-plus";
  4. import { postAddDimension, getDimensionRemove } from "@/api/dimension";
  5. import type { DrawerProps, FormItemProps, FormProps } from "element-plus";
  6. // const itemLabelPosition = ref<FormItemProps["labelPosition"]>("");
  7. const drawer = ref(false);
  8. const direction = ref<DrawerProps["direction"]>("rtl");
  9. const ruleFormRef = ref();
  10. const formLabelAlign = reactive({
  11. list: [
  12. {
  13. id: "",
  14. dimName: "",
  15. dimWeight: "",
  16. mode: ""
  17. }
  18. ],
  19. dimName: "",
  20. dimWeight: "",
  21. mode: 1,
  22. showIndicRemark: 1,
  23. showScoreRule: 1,
  24. showDatasource: 0,
  25. showTargetValue: 0,
  26. showFinalValue: 0,
  27. showChallengeValue: 0,
  28. showStartValue: 0,
  29. remark: ""
  30. });
  31. watch(
  32. () => [
  33. formLabelAlign.showIndicRemark,
  34. formLabelAlign.showScoreRule,
  35. formLabelAlign.showDatasource,
  36. formLabelAlign.showTargetValue,
  37. formLabelAlign.showFinalValue,
  38. formLabelAlign.showChallengeValue,
  39. formLabelAlign.showStartValue
  40. ],
  41. newValues => {
  42. formLabelAlign.showIndicRemark = newValues[0] ? 1 : 0;
  43. formLabelAlign.showScoreRule = newValues[1] ? 1 : 0;
  44. formLabelAlign.showDatasource = newValues[2] ? 1 : 0;
  45. formLabelAlign.showTargetValue = newValues[3] ? 1 : 0;
  46. formLabelAlign.showFinalValue = newValues[4] ? 1 : 0;
  47. formLabelAlign.showChallengeValue = newValues[5] ? 1 : 0;
  48. formLabelAlign.showStartValue = newValues[6] ? 1 : 0;
  49. }
  50. );
  51. const newAddItem = ref();
  52. const handleClose = (done: () => void) => {
  53. // ElMessageBox.confirm("配置项未保存,确认关闭", {
  54. // type: "warning"
  55. // }).then(() => {
  56. // });
  57. drawer.value = false;
  58. };
  59. function cancelClick() {}
  60. function confirmClick() {
  61. ruleFormRef.value.validate((valid: boolean) => {
  62. if (valid) {
  63. postAddDimensionApi();
  64. }
  65. });
  66. }
  67. const open = row => {
  68. if (row) {
  69. formLabelAlign.dimName = row.name;
  70. } else {
  71. formLabelAlign.dimName = "";
  72. }
  73. drawer.value = true;
  74. };
  75. const postAddDimensionApi = async () => {
  76. const { code, msg } = await postAddDimension(formLabelAlign);
  77. if (code === 200) {
  78. ElMessage({
  79. message: "添加成功",
  80. type: "success"
  81. });
  82. drawer.value = false;
  83. } else {
  84. ElMessage({
  85. message: msg,
  86. type: "error"
  87. });
  88. }
  89. };
  90. defineExpose({
  91. open
  92. });
  93. const radio1 = ref("1");
  94. </script>
  95. <template>
  96. <div>
  97. <el-drawer
  98. v-model="drawer"
  99. :direction="direction"
  100. :before-close="handleClose"
  101. >
  102. <template #header>
  103. <h4>指标详情</h4>
  104. </template>
  105. <template #default>
  106. <div>
  107. <el-form
  108. ref="ruleFormRef"
  109. label-position="top"
  110. label-width="auto"
  111. :model="formLabelAlign"
  112. >
  113. <el-form-item
  114. label="维度名称"
  115. prop="dimName"
  116. label-position="top"
  117. :rules="[
  118. {
  119. required: true,
  120. message: '请输入模板名称',
  121. trigger: 'blur'
  122. }
  123. ]"
  124. >
  125. <el-input v-model="formLabelAlign.dimName" />
  126. </el-form-item>
  127. <el-form-item label="维度权重" label-position="top">
  128. <el-switch v-model="formLabelAlign.dimWeight" class="mr-4" />
  129. <el-input style="max-width: 150px">
  130. <template #append>%</template>
  131. </el-input>
  132. </el-form-item>
  133. <el-form-item label="计算方式" label-position="top">
  134. <el-radio-group v-model="formLabelAlign.mode">
  135. <el-radio :value="0" size="large">加权</el-radio>
  136. <el-radio :value="1" size="large">加和</el-radio>
  137. </el-radio-group>
  138. </el-form-item>
  139. <el-form-item label="指标显示字段设置" label-position="top">
  140. <!-- <template #default="{ row }"> -->
  141. <template #default>
  142. <div>
  143. <div>
  144. <el-text type="info">指标说明</el-text>
  145. <el-switch
  146. v-model="formLabelAlign.showIndicRemark"
  147. class="ml-2"
  148. />
  149. </div>
  150. <div>
  151. <el-text type="info">评价标准</el-text>
  152. <el-switch
  153. v-model="formLabelAlign.showScoreRule"
  154. class="ml-2"
  155. />
  156. </div>
  157. <div>
  158. <el-text type="info">数据来源</el-text>
  159. <el-switch
  160. v-model="formLabelAlign.showDatasource"
  161. class="ml-2"
  162. />
  163. </div>
  164. <div class="ml-3">
  165. <el-text type="info">目标值</el-text>
  166. <el-switch
  167. v-model="formLabelAlign.showTargetValue"
  168. class="ml-2"
  169. />
  170. </div>
  171. <div class="ml-3">
  172. <el-text type="info">完成值</el-text>
  173. <el-switch
  174. v-model="formLabelAlign.showFinalValue"
  175. class="ml-2"
  176. />
  177. </div>
  178. <div class="ml-3">
  179. <el-text type="info">挑战值</el-text>
  180. <el-switch
  181. v-model="formLabelAlign.showChallengeValue"
  182. class="ml-2"
  183. />
  184. </div>
  185. <div class="ml-3">
  186. <el-text type="info">门栏值</el-text>
  187. <el-switch
  188. v-model="formLabelAlign.showStartValue"
  189. class="ml-2"
  190. />
  191. </div>
  192. </div>
  193. </template>
  194. </el-form-item>
  195. </el-form>
  196. </div>
  197. </template>
  198. <template #footer>
  199. <div>
  200. <el-button @click="cancelClick">取消</el-button>
  201. <el-button type="primary" @click="confirmClick">确认</el-button>
  202. </div>
  203. </template>
  204. </el-drawer>
  205. </div>
  206. </template>