PerformanceT.vue 57 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299
  1. <template>
  2. <div class="PerformanceT-all">
  3. <el-dialog width="830px" class="settings-dialog" title="设置" :visible.sync="dialogTableVisible">
  4. <el-form :model="ruleForm" :rules="rules" ref="ruleForm" label-width="100px" class="demo-ruleForm">
  5. <div class="settings-form">
  6. <!-- <el-form-item label="考核项目">
  7. <el-select value-key="id" @change="itemchange" v-model="ruleForm.id" placeholder="请选择活动区域">
  8. <el-option v-for="(item,index) in tablelist" :key="index" :label="item.name" :value="item.id"></el-option>
  9. </el-select>
  10. </el-form-item>
  11. <el-form-item label="考核细则">
  12. <el-select v-model="ruleForm.parentId" placeholder="请选择活动区域">
  13. <el-option v-for="(item,index) in Assessmentrules" :key="index" :label="item.name" :value="item.id"></el-option>
  14. </el-select>
  15. </el-form-item> -->
  16. <el-form-item label="上级菜单">
  17. <el-select filterable clearable v-model="ruleForm.parentId" placeholder="请选择上级菜单">
  18. <el-option v-for="(item,index) in parentmenuarr" :key="index" :label="item.name"
  19. :value="item.id"></el-option>
  20. </el-select>
  21. </el-form-item>
  22. <el-form-item label="名称" prop="name">
  23. <el-input v-model="ruleForm.name"></el-input>
  24. </el-form-item>
  25. <el-form-item label="评估比例" prop="assessmentProportion">
  26. <el-input v-model="ruleForm.assessmentProportion"></el-input>
  27. </el-form-item>
  28. <el-form-item style="width:100%;" label="评估标准">
  29. <el-input type="textarea" :rows="6" v-model="ruleForm.assessmentStandard"></el-input>
  30. </el-form-item>
  31. <el-form-item style="width:100%;" label="备注">
  32. <el-input type="textarea" :rows="2" v-model="ruleForm.remark"></el-input>
  33. </el-form-item>
  34. </div>
  35. <!-- <el-form-item label="关键绩效指标(KPI)">
  36. <el-select v-model="ruleForm.parentId" placeholder="请选择活动区域">
  37. <el-option v-for="(item,index) in Assessmentrules" :key="index" :label="item.name" :value="item.id"></el-option>
  38. </el-select>
  39. </el-form-item> -->
  40. <el-form-item style="text-align: right;width:100%;">
  41. <el-button type="primary" @click="submitForm('ruleForm')">立即设置</el-button>
  42. <el-button @click="resetForm('ruleForm')">重置</el-button>
  43. <el-button @click="dialogTableVisible=false">取消</el-button>
  44. </el-form-item>
  45. </el-form>
  46. </el-dialog>
  47. <el-dialog width="830px" class="allocation-dialog" title="分配设置" :visible.sync="allocationVisible">
  48. <el-form :model="allocationArgument" :rules="allocationrules" ref="allocationArgument" label-width="100px"
  49. class="demo-ruleForm">
  50. <div class="allocation-form">
  51. <el-form-item prop="assessmentSettingId" label="分配菜单">
  52. <el-select filterable clearable @change="caidanchange" v-model="allocationArgument.assessmentSettingId"
  53. placeholder="请选择分配菜单">
  54. <el-option v-for="(item,index) in parentmenuarr" :key="index" :label="item.name"
  55. :value="item.id"></el-option>
  56. </el-select>
  57. </el-form-item>
  58. <el-form-item label="占比" prop="assessmentProportionChi">
  59. <el-input v-model="allocationArgument.assessmentProportionChi"></el-input>
  60. </el-form-item>
  61. <el-form-item label="目标值" prop="targetValue">
  62. <el-input v-model="allocationArgument.targetValue"></el-input>
  63. </el-form-item>
  64. <el-form-item prop="fixed" label="是否固定">
  65. <el-radio-group v-model="allocationArgument.fixed">
  66. <el-radio label="是"></el-radio>
  67. <el-radio label="否"></el-radio>
  68. </el-radio-group>
  69. </el-form-item>
  70. <el-form-item label="所属公司" prop="Corporation">
  71. <el-select v-model="allocationArgument.Corporation" value-key="id" @change="changeCorporation"
  72. placeholder="请选择所属公司">
  73. <el-option v-for="item in CorporationOption" :key="item.companyId" :label="item.companyName"
  74. :value="item.companyId">
  75. </el-option>
  76. </el-select>
  77. </el-form-item>
  78. <el-form-item label="所属部门" prop="Division">
  79. <el-select v-model="allocationArgument.Division" value-key="id" @change="changeDivision"
  80. placeholder="请选择所属部门">
  81. <el-option v-for="item in DivisionOption" :key="item.depId" :label="item.depName"
  82. :value="item.depId">
  83. </el-option>
  84. </el-select>
  85. </el-form-item>
  86. <el-form-item label="职位" prop="jobId">
  87. <el-select @change="QueryUserList" v-model="allocationArgument.jobId" placeholder="请选择职位">
  88. <el-option v-for="item in PostsOption" :key="item.jobId" :label="item.jobName"
  89. :value="item.jobId">
  90. </el-option>
  91. </el-select>
  92. </el-form-item>
  93. <el-form-item label="人员" prop="userId">
  94. <el-select v-model="allocationArgument.userId" placeholder="请选择职位">
  95. <el-option v-for="item in userinfoarr" :key="item.id" :label="item.cnName" :value="item.id">
  96. </el-option>
  97. </el-select>
  98. </el-form-item>
  99. <!-- <el-form-item prop="assessmentStandard" style="width:100%;" label="评估标准">
  100. <el-input type="textarea" :rows="2" v-model="allocationArgument.assessmentStandard"></el-input>
  101. </el-form-item> -->
  102. <el-form-item style="width:100%;" label="备注">
  103. <el-input type="textarea" :rows="2" v-model="allocationArgument.remark"></el-input>
  104. </el-form-item>
  105. </div>
  106. <el-form-item style="text-align: right;width:100%;">
  107. <el-button type="primary" @click="submitFormallocation('allocationArgument')">立即分配</el-button>
  108. <el-button @click="resetFormallocation('allocationArgument')">重置</el-button>
  109. <el-button @click="allocationVisible=false">取消</el-button>
  110. </el-form-item>
  111. </el-form>
  112. </el-dialog>
  113. <el-dialog width="400px" class="allocation-dialog" title="删除设置项" :visible.sync="deleteVisible">
  114. <div class="deleteXM">
  115. <label>项目名称:</label>
  116. <el-select filterable clearable v-model="deleteXMid"
  117. placeholder="请选择项目名称">
  118. <el-option v-for="(item,index) in parentmenuarr" :key="index" :label="item.name"
  119. :value="item.id"></el-option>
  120. </el-select>
  121. </div>
  122. <div style="text-align: right;margin-top: 20px;">
  123. <el-button size="mini" @click="deleteXMbtn" type="danger">删除</el-button>
  124. <el-button size="mini" @click="deleteVisible=false">取消</el-button>
  125. </div>
  126. </el-dialog>
  127. <div class="PerformanceT-hade">
  128. <div>
  129. <el-select @change="userchange" style="width:200px;" v-model="value" filterable placeholder="请选择">
  130. <el-option v-for="item in options" :key="item.id" :label="item.cnName" :value="item.id">
  131. </el-option>
  132. </el-select>
  133. <el-date-picker
  134. v-model="monthdate"
  135. type="month"
  136. style="width:200px;"
  137. placeholder="选择月">
  138. </el-date-picker>
  139. </div>
  140. <div>
  141. <el-button @click="ondialog" type="primary">设 置</el-button>
  142. <el-button @click="dlexmclick" type="primary">删除设置项</el-button>
  143. <el-button @click="onallocation" type="primary">分配绩效</el-button>
  144. <el-button @click="saveclick" type="primary">保 存</el-button>
  145. </div>
  146. </div>
  147. <div class="PerformanceT-title">
  148. <div :style="title.width" v-for="(title,indext) in tabletitle" :key="indext">
  149. {{ title.name }}
  150. </div>
  151. </div>
  152. <div class="pf-table">
  153. <div class="PerformanceT-table-box" :ref="'tbox'+indexs" v-for="(tables,indexs) in tablelist" :key="indexs">
  154. <div @click="itemclick(tables)" style="width:90px;text-align: center;">
  155. <div>{{tables.name}}</div>
  156. <div>{{'('+tables.assessmentProportion_Percentage+'%)'}}</div>
  157. </div>
  158. <div class="calibrate-box">
  159. <div class="second-box" v-for="(item,indexss) in tables.children" :key="indexss">
  160. <div style="display: -webkit-box;">
  161. <div @click="itemclick(item)" class="pf-onename">
  162. <div>{{item.name}}</div>
  163. <div>{{'('+item.assessmentProportion_Percentage+'%)'}}</div>
  164. </div>
  165. <div class="calibrate-box">
  166. <div class="pf-twoname" v-for="(itemchildren,indexsss) in item.children"
  167. :key="indexsss">
  168. <div @click="itemclick(itemchildren)" style="width: 150px;border-right: 1px solid #ebeef5;">
  169. <div>{{itemchildren.name}}</div>
  170. <div>{{'('+itemchildren.assessmentProportion_Percentage+'%)'}}</div>
  171. </div>
  172. <div @click="goalclick(itemchildren)" class="pf-zb">{{ itemchildren.assessmentProportionChi*100+"%" }}</div>
  173. <div @click="goalclick(itemchildren)" style="width: 100px;border-right: 1px solid #ebeef5;">
  174. {{itemchildren.targetValue}}</div>
  175. <div @click="itemclick(itemchildren)" style="width: 380px;padding: 10px;border-right: 1px solid #ebeef5;">{{
  176. itemchildren.assessmentStandard }}</div>
  177. <div style="width: 250px;border-right: 1px solid #ebeef5;">
  178. <el-input style="width:98%" type="textarea" :rows="4" placeholder="请输入内容" v-model="itemchildren.status">
  179. </el-input>
  180. </div>
  181. <div style="width: 80px;border-right: 1px solid #ebeef5;">
  182. <el-input-number style="width: 50px;" size="mini" :controls="false"
  183. v-model="itemchildren.selfAssessment"></el-input-number>
  184. </div>
  185. <div style="width: 80px;border-right: 1px solid #ebeef5;">
  186. <el-input-number :disabled="!isLeader" style="width: 50px;" size="mini" :controls="false"
  187. v-model="itemchildren.higherUpAssessment"></el-input-number>
  188. </div>
  189. <div style="width: 80px;border-right: 1px solid #ebeef5;">
  190. <el-input-number disabled style="width: 50px;" size="mini" :controls="false"
  191. v-model="itemchildren.score"></el-input-number>
  192. </div>
  193. <div style="width: 80px;border-right: 1px solid #ebeef5;">
  194. <el-input-number disabled style="width: 50px;" size="mini" :controls="false"
  195. v-model="itemchildren.scoreTotal"></el-input-number>
  196. </div>
  197. <div style="width: 74px;">
  198. <el-button @click="deletecontent(itemchildren)" size="mini" icon="el-icon-delete" type="danger"></el-button>
  199. </div>
  200. </div>
  201. </div>
  202. </div>
  203. </div>
  204. </div>
  205. </div>
  206. </div>
  207. </div>
  208. </template>
  209. <script>
  210. export default {
  211. data() {
  212. return {
  213. CorporationOption:[],//公司
  214. DivisionOption:[],//部门
  215. PostsOption:[],//职位
  216. token:'',
  217. monthdate:'',
  218. userId:'',
  219. isLeader:false,//是否为上级
  220. tablelist:[],
  221. tabletitle:[
  222. {
  223. width:'width:90px',
  224. name:'考核项目'
  225. },
  226. {
  227. width:'width:150px',
  228. name:'考核细则'
  229. },
  230. {
  231. width:'width:150px',
  232. name:'关键绩效指标(KPI)'
  233. },
  234. {
  235. width:'width:50px',
  236. name:'占比'
  237. },
  238. {
  239. width:'width:100px',
  240. name:'目标值'
  241. },
  242. {
  243. width:'width:400px',
  244. name:'评价标准'
  245. },
  246. {
  247. width:'width:250px',
  248. name:'达成情况'
  249. },
  250. {
  251. width:'width:80px',
  252. name:'自评'
  253. },
  254. {
  255. width:'width:80px',
  256. name:'上级评分'
  257. },
  258. {
  259. width:'width:80px',
  260. name:'该项得分'
  261. },
  262. {
  263. width:'width:80px',
  264. name:'绩效分'
  265. },
  266. {
  267. width:'width:74px',
  268. name:'操作'
  269. },
  270. ],
  271. tboxheight:0,
  272. immobilizationarr:[
  273. {
  274. id: 788,
  275. name: "行为管理",
  276. assessmentProportion: 0.4,
  277. assessmentStandard: "",
  278. parentId: 0,
  279. assessmentSettingId: 0,
  280. assessmentProportionChi: 0,
  281. targetValue: "",
  282. jobId: 0,
  283. userId: 0,
  284. fixed: 0,
  285. children: [
  286. {
  287. id: 2,
  288. name: "考勤管理",
  289. assessmentProportion: 0.6,
  290. assessmentStandard: "",
  291. parentId: 1,
  292. assessmentSettingId: 0,
  293. assessmentProportionChi: 0,
  294. targetValue: "",
  295. jobId: 0,
  296. userId: 0,
  297. fixed: 0,
  298. children: [
  299. {
  300. id: 3,
  301. name: "出勤及请假",
  302. assessmentProportion: 1,
  303. assessmentStandard: "出勤情况:迟到、事假、年假,调休,请假类型和天数扣分①【90-100】优秀:每月迟到次数为0;调休不超过1天;请假为0;年假为0。②【80-89】良好:每月迟到次数不超过1次,且迟到时间不超过5分钟;调休不超过2天;请假不超过1天;年假为0。③【60-79】一般:每月迟到次数不超过3次,每次迟到时间不超过10分钟。调休不超过3天;请假不超过2天;年假为1。④【0-59】较差:每月迟到次数超过3次,或有单次迟到时间超过30分钟。调休超过5天;请假超过3天;年假超过2天。",
  304. parentId: 2,
  305. assessmentSettingId: 3,
  306. assessmentProportionChi: 1,
  307. targetValue: "50万",
  308. jobId: 21,
  309. userId: 302,
  310. fixed: 0,
  311. children: [
  312. ],
  313. assessmentProportion_Percentage: 100,
  314. yearMonth: "2024-10-17 00:00:00",
  315. status: 1,
  316. selfAssessment: 95,
  317. higherUpAssessment: 95,
  318. score: 0,
  319. scoreTotal: 0,
  320. higherUpConfig: 0,
  321. higherUpUserId: 235
  322. },
  323. ],
  324. assessmentProportion_Percentage: 60,
  325. yearMonth: "0001-01-01 00:00:00",
  326. status: 0,
  327. selfAssessment: 0,
  328. higherUpAssessment: 0,
  329. score: 0,
  330. scoreTotal: 0,
  331. higherUpConfig: 0,
  332. higherUpUserId: 0
  333. },
  334. {
  335. id: 8,
  336. name: "仪容仪表",
  337. assessmentProportion: 0.2,
  338. assessmentStandard: "",
  339. parentId: 1,
  340. assessmentSettingId: 0,
  341. assessmentProportionChi: 0,
  342. targetValue: "",
  343. jobId: 0,
  344. userId: 0,
  345. fixed: 0,
  346. children: [
  347. {
  348. id: 9,
  349. name: "装容及着装",
  350. assessmentProportion: 1,
  351. assessmentStandard: "①【90-100】优秀:每天保持装容、着装职业装或工装每天坚持为优秀。②【80-89】良好:月度出现4次内的,未保持装容、未着装职业装或工装。③【60-79】一般:月度出现5次以上的,未保持装容、未着装职业装或工装。④【0-59】较差:月度出现5次以下的,未保持装容、未着装职业装或工装。",
  352. parentId: 8,
  353. assessmentSettingId: 9,
  354. assessmentProportionChi: 0.2,
  355. targetValue: "10人",
  356. jobId: 21,
  357. userId: 302,
  358. fixed: 0,
  359. children: [
  360. ],
  361. assessmentProportion_Percentage: 100,
  362. yearMonth: "0001-01-01 00:00:00",
  363. status: 0,
  364. selfAssessment: 0,
  365. higherUpAssessment: 0,
  366. score: 0,
  367. scoreTotal: 0,
  368. higherUpConfig: 0,
  369. higherUpUserId: 0
  370. }
  371. ],
  372. assessmentProportion_Percentage: 20,
  373. yearMonth: "0001-01-01 00:00:00",
  374. status: 0,
  375. selfAssessment: 0,
  376. higherUpAssessment: 0,
  377. score: 0,
  378. scoreTotal: 0,
  379. higherUpConfig: 0,
  380. higherUpUserId: 0
  381. },
  382. {
  383. id: 9,
  384. name: "工作失误",
  385. assessmentProportion: 0.2,
  386. assessmentStandard: "",
  387. parentId: 1,
  388. assessmentSettingId: 0,
  389. assessmentProportionChi: 0,
  390. targetValue: "",
  391. jobId: 0,
  392. userId: 0,
  393. fixed: 0,
  394. children: [
  395. {
  396. id: 9,
  397. name: "日常工作失误",
  398. assessmentProportion: 1,
  399. assessmentStandard: "①错误次数:文件错误、操作失误等,每次错误根据严重程度扣分,重复错误加倍扣分(10-100分)②错误影响:对项目、团队、客户的影响,根据影响范围和程度扣分,重大失误额外扣分(0-100分)③改进措施:错误后的补救和预防措施,采取有效措施得部分分数,无改进或效果不佳扣分(0-100分)",
  400. parentId: 8,
  401. assessmentSettingId: 9,
  402. assessmentProportionChi: 0.2,
  403. targetValue: "10人",
  404. jobId: 21,
  405. userId: 302,
  406. fixed: 0,
  407. children: [
  408. ],
  409. assessmentProportion_Percentage: 100,
  410. yearMonth: "0001-01-01 00:00:00",
  411. status: 0,
  412. selfAssessment: 0,
  413. higherUpAssessment: 0,
  414. score: 0,
  415. scoreTotal: 0,
  416. higherUpConfig: 0,
  417. higherUpUserId: 0
  418. }
  419. ],
  420. assessmentProportion_Percentage: 20,
  421. yearMonth: "0001-01-01 00:00:00",
  422. status: 0,
  423. selfAssessment: 0,
  424. higherUpAssessment: 0,
  425. score: 0,
  426. scoreTotal: 0,
  427. higherUpConfig: 0,
  428. higherUpUserId: 0
  429. }
  430. ],
  431. assessmentProportion_Percentage: 40,
  432. yearMonth: "0001-01-01 00:00:00",
  433. status: 0,
  434. selfAssessment: 0,
  435. higherUpAssessment: 0,
  436. score: 0,
  437. scoreTotal: 0,
  438. higherUpConfig: 0,
  439. higherUpUserId: 0
  440. },
  441. {
  442. id: 666,
  443. name: "工作态度",
  444. assessmentProportion: 0.4,
  445. assessmentStandard: "",
  446. parentId: 0,
  447. assessmentSettingId: 0,
  448. assessmentProportionChi: 0,
  449. targetValue: "",
  450. jobId: 0,
  451. userId: 0,
  452. fixed: 0,
  453. children: [
  454. {
  455. id: 2,
  456. name: "工作态度",
  457. assessmentProportion: 0.6,
  458. assessmentStandard: "",
  459. parentId: 1,
  460. assessmentSettingId: 0,
  461. assessmentProportionChi: 0,
  462. targetValue: "",
  463. jobId: 0,
  464. userId: 0,
  465. fixed: 0,
  466. children: [
  467. {
  468. id: 3,
  469. name: "主动性及责任心",
  470. assessmentProportion: 1,
  471. assessmentStandard: "①【101-120】表现出高度的主动性和责任感,能够自发规划并优秀地完成工作;愿意承担并成功处理紧急和重要的任务。②【80-100】积极主动,按时完成分配任务,不推卸责任;愿意接受临时紧急任务,对自己的职责负责。③【60-79】工作不够主动,常拖延且有时推卸任务,需频繁督导,偶尔未能按时完成工作。仅限于工作时间履行职责,对紧急和临时任务常找借口回避。④【0-59】工作态度消极,频繁怠工,即使多次督促也未能按时完成工作,且常有逃避任务和推卸责任的行为",
  472. parentId: 2,
  473. assessmentSettingId: 3,
  474. assessmentProportionChi: 1,
  475. targetValue: "50万",
  476. jobId: 21,
  477. userId: 302,
  478. fixed: 0,
  479. children: [
  480. ],
  481. assessmentProportion_Percentage: 100,
  482. yearMonth: "2024-10-17 00:00:00",
  483. status: 1,
  484. selfAssessment: 95,
  485. higherUpAssessment: 95,
  486. score: 0,
  487. scoreTotal: 0,
  488. higherUpConfig: 0,
  489. higherUpUserId: 235
  490. },
  491. {
  492. id: 3,
  493. name: "团队合作及精神面貌",
  494. assessmentProportion: 1,
  495. assessmentStandard: "①【101-120】积极协助同事,乐于助人且不影响个人工作;日常表现充满活力和热情,传递正能量;严格遵守公司规章制度,是同事的榜样。②【80-100】与团队合作融洽,愿意帮助他人;态度积极,对工作和客户保持正面态度;遵守公司规定,表现合规。③【60-79】在他人请求帮助时愿意提供有限协助;整体精神面貌和着装符合要求,偶尔会有抱怨,但经提醒能迅速调整;有时会离开工位,但提醒后能迅速回到岗位。④【0-59】仅专注于个人任务,不愿与同事和客户沟通,拒绝帮助他人。工作态度消极,缺乏热情,常散发负能量,频繁离岗,对团队产生负面影响,即使被提醒也未能有效改善。",
  496. parentId: 2,
  497. assessmentSettingId: 3,
  498. assessmentProportionChi: 1,
  499. targetValue: "50万",
  500. jobId: 21,
  501. userId: 302,
  502. fixed: 0,
  503. children: [
  504. ],
  505. assessmentProportion_Percentage: 100,
  506. yearMonth: "2024-10-17 00:00:00",
  507. status: 1,
  508. selfAssessment: 95,
  509. higherUpAssessment: 95,
  510. score: 0,
  511. scoreTotal: 0,
  512. higherUpConfig: 0,
  513. higherUpUserId: 235
  514. },
  515. ],
  516. assessmentProportion_Percentage: 60,
  517. yearMonth: "0001-01-01 00:00:00",
  518. status: 0,
  519. selfAssessment: 0,
  520. higherUpAssessment: 0,
  521. score: 0,
  522. scoreTotal: 0,
  523. higherUpConfig: 0,
  524. higherUpUserId: 0
  525. }
  526. ],
  527. assessmentProportion_Percentage: 40,
  528. yearMonth: "0001-01-01 00:00:00",
  529. status: 0,
  530. selfAssessment: 0,
  531. higherUpAssessment: 0,
  532. score: 0,
  533. scoreTotal: 0,
  534. higherUpConfig: 0,
  535. higherUpUserId: 0
  536. },
  537. ],
  538. deleteVisible:false,
  539. userinfoarr:[],
  540. options: [],
  541. value: '',
  542. dialogTableVisible:false,
  543. allocationVisible:false,
  544. Assessmentrules:[],
  545. parentmenuarr:[],
  546. ruleForm: {
  547. name: '',
  548. assessmentProportion: '',
  549. assessmentStandard: '',
  550. parentId: '',
  551. parentmenu:'',
  552. id:'',
  553. createId: '',
  554. remark: '',
  555. },
  556. //分配参数
  557. allocationArgument:{
  558. id:'',
  559. Corporation:'',
  560. Division:'',
  561. createUserId:'',
  562. assessmentSettingId:'',
  563. assessmentProportionChi:'',//占比
  564. targetValue:'',//目标值
  565. jobId:'',//岗位id
  566. userId:'',//员工id
  567. fixed:'',//固定标识 (1 是固定 2 是灵活)
  568. remark:'',//备注
  569. },
  570. deleteXMid:'',
  571. rules: {
  572. name: [
  573. { required: true, message: '请输入', trigger: 'blur' },
  574. ],
  575. assessmentProportion: [
  576. { required: true, message: '请输入', trigger: 'blur' }
  577. ],
  578. },
  579. allocationrules:{
  580. assessmentSettingId: [
  581. { required: true, message: '请选择', trigger: 'change' }
  582. ],
  583. assessmentProportionChi: [
  584. { required: true, message: '请输入', trigger: 'blur' }
  585. ],
  586. targetValue: [
  587. { required: true, message: '请输入', trigger: 'blur' }
  588. ],
  589. Corporation: [
  590. { required: true, message: '请选择', trigger: 'change' }
  591. ],
  592. Division: [
  593. { required: true, message: '请选择', trigger: 'change' }
  594. ],
  595. jobId: [
  596. { required: true, message: '请选择', trigger: 'change' }
  597. ],
  598. userId: [
  599. { required: true, message: '请选择', trigger: 'change' }
  600. ],
  601. fixed: [
  602. { required: true, message: '请选择', trigger: 'change' }
  603. ],
  604. assessmentStandard: [
  605. { required: true, message: '请填写', trigger: 'blur' }
  606. ],
  607. }
  608. }
  609. },
  610. methods:{
  611. //处理日期
  612. datetime(val) {
  613. var date = new Date(val);
  614. var y = date.getFullYear();
  615. var m = date.getMonth() + 1 >= 10 ? date.getMonth() + 1 : '0' + (date.getMonth() + 1).toString();
  616. var d = date.getDate() >= 10 ? date.getDate() : '0' + (date.getDate()).toString();
  617. return y + '-' + m
  618. },
  619. //获取公司
  620. daraSource(){
  621. var url = "/api/register/daraSource"
  622. var that = this
  623. this.$axios({
  624. method: 'post',
  625. url: url,
  626. headers: {
  627. Authorization: 'Bearer ' + this.token
  628. }
  629. }).then(function (res) {
  630. if(res.data.code==200){
  631. that.CorporationOption=res.data.data;
  632. }else{
  633. that.$message({
  634. message: '加载失败!原因:'+res.data.msg,
  635. type: 'warning'
  636. });
  637. }
  638. })
  639. },
  640. dlexmclick(){
  641. this.deleteXMid='';
  642. this.deleteVisible=true;
  643. },
  644. deleteXMbtn(){
  645. this.$confirm('此操作将删除该数据, 是否继续?', '提示', {
  646. confirmButtonText: '确定',
  647. cancelButtonText: '取消',
  648. type: 'warning'
  649. }).then(() => {
  650. this.DeleteAssessmentSetting(this.deleteXMid)
  651. }).catch(() => {
  652. this.$message({
  653. type: 'info',
  654. message: '操作已取消!'
  655. });
  656. });
  657. },
  658. deletecontent(val){
  659. this.$confirm('此操作将删除该数据, 是否继续?', '提示', {
  660. confirmButtonText: '确定',
  661. cancelButtonText: '取消',
  662. type: 'warning'
  663. }).then(() => {
  664. this.DeleteAssessmentContentSetting(val.contentId)
  665. }).catch(() => {
  666. this.$message({
  667. type: 'info',
  668. message: '操作已取消!'
  669. });
  670. });
  671. },
  672. //删除内容
  673. DeleteAssessmentContentSetting(val){
  674. var url = "/api/PersonnelModule/DeleteAssessmentContentSetting"
  675. var that = this
  676. this.$axios({
  677. method: 'post',
  678. url: url,
  679. headers: {
  680. Authorization: 'Bearer '
  681. },
  682. data:{
  683. idArr:[val],
  684. userId:that.userId
  685. }
  686. }).then(function (res) {
  687. if(res.data.code==200){
  688. that.$message({
  689. type: 'success',
  690. message: res.data.msg
  691. });
  692. that.GetPerformanceList();
  693. }else{
  694. that.$message({
  695. message: '加载失败!原因:'+res.data.msg,
  696. type: 'warning'
  697. });
  698. }
  699. })
  700. },
  701. //删除项
  702. DeleteAssessmentSetting(val){
  703. var url = "/api/PersonnelModule/DeleteAssessmentSetting"
  704. var that = this
  705. this.$axios({
  706. method: 'post',
  707. url: url,
  708. headers: {
  709. Authorization: 'Bearer '
  710. },
  711. data:{
  712. idArr:[val],
  713. userId:that.userId
  714. }
  715. }).then(function (res) {
  716. if(res.data.code==200){
  717. that.deleteVisible=false;
  718. that.$message({
  719. type: 'success',
  720. message: res.data.msg
  721. });
  722. that.QueryAssessmentSettingListOffset();
  723. }else{
  724. that.deleteVisible=false;
  725. that.$message({
  726. message: '加载失败!原因:'+res.data.msg,
  727. type: 'warning'
  728. });
  729. }
  730. })
  731. },
  732. //获取员工
  733. QueryUserList(num){
  734. if (num!=0) {
  735. this.allocationArgument.userId = '';
  736. }
  737. var url = "/api/System/QueryUserList"
  738. var that = this
  739. this.$axios({
  740. method: 'post',
  741. url: url,
  742. headers: {
  743. Authorization: 'Bearer ' + this.token
  744. },
  745. data:{
  746. CompanyId:that.allocationArgument.Corporation,
  747. DepId:that.allocationArgument.Division,
  748. JobPostId:that.allocationArgument.jobId,
  749. PortType:1,
  750. }
  751. }).then(function (res) {
  752. if(res.data.code==200){
  753. that.userinfoarr=res.data.data;
  754. }else{
  755. that.$message({
  756. message: '加载失败!原因:'+res.data.msg,
  757. type: 'warning'
  758. });
  759. }
  760. })
  761. },
  762. //切换公司
  763. changeCorporation(item,num) {
  764. console.log(item);
  765. if (num!=0) {
  766. this.allocationArgument.Division = '';
  767. this.allocationArgument.jobId = '';
  768. this.allocationArgument.userId = '';
  769. }
  770. for (let i = 0; i < this.CorporationOption.length; i++) {
  771. if (this.CorporationOption[i].companyId == item) {
  772. this.DivisionOption = this.CorporationOption[i].subDep
  773. }
  774. }
  775. },
  776. //切换部门
  777. changeDivision(item,num) {
  778. if (num!=0) {
  779. this.allocationArgument.jobId = '';
  780. this.allocationArgument.userId = '';
  781. }
  782. for (let j = 0; j < this.DivisionOption.length; j++) {
  783. if (this.DivisionOption[j].depId == item) {
  784. this.PostsOption = this.DivisionOption[j].subJob
  785. }
  786. }
  787. },
  788. //项目名点击
  789. itemclick(val){
  790. console.log(val);
  791. this.dialogTableVisible=true;
  792. this.ruleForm.parentId=val.parentId==0?'':val.parentId;
  793. this.ruleForm.name=val.name;
  794. this.ruleForm.id=val.id;
  795. this.ruleForm.assessmentProportion=val.assessmentProportion;
  796. this.ruleForm.assessmentStandard=val.assessmentStandard;
  797. this.ruleForm.remark=val.assessmentStandard;
  798. },
  799. //细则名点击
  800. // thinclick(val){
  801. // console.log(val);
  802. // this.dialogTableVisible=true;
  803. // this.ruleForm.parentId=val.parentId==0?'':val.parentId;
  804. // this.ruleForm.name=val.name;
  805. // this.ruleForm.id=val.id;
  806. // this.ruleForm.assessmentProportion=val.assessmentProportion;
  807. // this.ruleForm.assessmentStandard=val.assessmentStandard;
  808. // this.ruleForm.remark=val.assessmentStandard;
  809. // },
  810. //细则名点击
  811. // KPIclick(val){
  812. // console.log(val);
  813. // this.dialogTableVisible=true;
  814. // this.ruleForm.parentId=val.parentId==0?'':val.parentId;
  815. // this.ruleForm.name=val.name;
  816. // this.ruleForm.id=val.id;
  817. // this.ruleForm.assessmentProportion=val.assessmentProportion;
  818. // this.ruleForm.assessmentStandard=val.assessmentStandard;
  819. // this.ruleForm.remark=val.assessmentStandard;
  820. // },
  821. //目标
  822. goalclick(val){
  823. console.log(val);
  824. this.onallocation()
  825. for (let b = 0; b < this.CorporationOption.length; b++) {
  826. for (let g = 0; g < this.CorporationOption[b].subDep.length; g++) {
  827. for (let m = 0; m < this.CorporationOption[b].subDep[g].subJob.length; m++) {
  828. if (val.jobId==this.CorporationOption[b].subDep[g].subJob[m].jobId) {
  829. this.allocationArgument.Corporation=this.CorporationOption[b].companyId;
  830. this.allocationArgument.Division=this.CorporationOption[b].subDep[g].depId;
  831. }
  832. }
  833. }
  834. }
  835. this.allocationArgument.id=val.contentId;
  836. this.allocationArgument.assessmentProportionChi=val.assessmentProportionChi;
  837. this.allocationArgument.assessmentSettingId=val.id;
  838. this.allocationArgument.targetValue=val.targetValue;
  839. this.allocationArgument.jobId=val.jobId;
  840. this.allocationArgument.userId=val.userId;
  841. this.allocationArgument.fixed=val.fixed==1?'是':'否';
  842. this.changeCorporation(this.allocationArgument.Corporation,0);
  843. this.changeDivision(this.allocationArgument.Division,0);
  844. this.QueryUserList(0);
  845. },
  846. //获取基础数据
  847. GetWageSheetBasicsDataSource(){
  848. var url = "/api/PersonnelModule/GetWageSheetBasicsDataSource"
  849. var that = this
  850. this.$axios({
  851. method: 'post',
  852. url: url,
  853. headers: {
  854. Authorization: 'Bearer '
  855. },
  856. }).then(function (res) {
  857. if (res.data.code == 200) {
  858. that.options=res.data.data.userNames;
  859. that.value=that.options[0].id;
  860. that.GetPerformanceList();
  861. } else {
  862. that.$message.error(res.data.msg);
  863. }
  864. }).catch(function (error) {
  865. that.$message.error("出错!,请联系信息部。");
  866. });
  867. },
  868. //获取数据
  869. QueryAssessmentSettingListOffset(){
  870. var url = "/api/PersonnelModule/QueryAssessmentSettingListOffset"
  871. var that = this
  872. this.$axios({
  873. method: 'post',
  874. url: url,
  875. headers: {
  876. Authorization: 'Bearer '
  877. },
  878. data:{
  879. pageIndex:1,
  880. pageSize:9999,
  881. searchValue:'',
  882. }
  883. }).then(function (res) {
  884. if (res.data.code == 200) {
  885. that.parentmenuarr=res.data.data.list;
  886. } else {
  887. that.$message.error(res.data.msg);
  888. }
  889. }).catch(function (error) {
  890. that.$message.error("出错!,请联系信息部。");
  891. });
  892. },
  893. //获取数据
  894. GetPerformanceList(){
  895. var url = "/api/PersonnelModule/GetPerformanceList?userid="+this.value+"&date="+this.datetime(this.monthdate)+"&loginUser="+this.userId
  896. var that = this
  897. this.$axios({
  898. method: 'get',
  899. url: url,
  900. headers: {
  901. Authorization: 'Bearer ' + this.token
  902. },
  903. }).then(function (res) {
  904. if (res.data.code == 200) {
  905. that.tablelist=res.data.data.root;
  906. that.isLeader=res.data.data.isLeader;
  907. // for(let i=0;i<that.immobilizationarr.length;i++){
  908. // that.tablelist.push(that.immobilizationarr[i])
  909. // }
  910. } else {
  911. that.$message.error(res.data.msg);
  912. }
  913. }).catch(function (error) {
  914. that.$message.error("网络错误,请稍后重试");
  915. });
  916. },
  917. //人员切换
  918. userchange(){
  919. this.GetPerformanceList();
  920. },
  921. objectSpanMethod({ row, column, rowIndex, columnIndex }) {
  922. const fields = ['name']
  923. if (fields.includes(column.property)) {
  924. const cellValue = row['lngitemid']
  925. if (cellValue && fields.includes(column.property)) {
  926. const prevRow = this.tableData[rowIndex - 1]
  927. let nextRow = this.tableData[rowIndex + 1]
  928. if (prevRow && prevRow['lngitemid'] === cellValue) {
  929. return { rowspan: 0, colspan: 0 }
  930. } else {
  931. // return { rowspan: row.rowspan, colspan: 1 }
  932. let countRowspan = 1
  933. while (nextRow && nextRow['lngitemid'] === cellValue) {
  934. nextRow = this.tableData[++countRowspan + rowIndex]
  935. }
  936. if (countRowspan > 1) {
  937. return { rowspan: countRowspan, colspan: 1 }
  938. }
  939. }
  940. }
  941. }
  942. },
  943. //获取赋值高
  944. getheight(){
  945. // this.tboxheight=this.$refs.tbox.offsetHeight+'px'
  946. let ref = this.$refs.tbox0
  947. console.log(ref);
  948. },
  949. //考核项目值改变
  950. itemchange(val){
  951. for(let i=0;i<this.tablelist.length;i++){
  952. if (this.tablelist[i].id==val) {
  953. this.Assessmentrules=this.tablelist[i].children;
  954. }
  955. }
  956. },
  957. //新增项
  958. AssessmentSettingOperation(){
  959. var url = "/api/PersonnelModule/AssessmentSettingOperation"
  960. var that = this
  961. this.$axios({
  962. method: 'post',
  963. url: url,
  964. headers: {
  965. Authorization: 'Bearer '
  966. },
  967. data:{
  968. name:that.ruleForm.name,
  969. assessmentProportion:that.ruleForm.assessmentProportion,
  970. assessmentStandard:that.ruleForm.assessmentStandard,
  971. parentId:that.ruleForm.parentId==''?0:that.ruleForm.parentId,
  972. id:that.ruleForm.id==''?0:that.ruleForm.id,
  973. createId:that.userId,
  974. remark:that.ruleForm.remark,
  975. }
  976. }).then(function (res) {
  977. if (res.data.code == 200) {
  978. that.dialogTableVisible=false;
  979. that.$message({
  980. type: 'success',
  981. message: res.data.msg
  982. });
  983. if (that.ruleForm.id!=0) {
  984. that.GetPerformanceList();
  985. }
  986. that.QueryAssessmentSettingListOffset();
  987. } else {
  988. that.dialogTableVisible=false;
  989. that.$message.error(res.data.msg);
  990. }
  991. }).catch(function (error) {
  992. that.$message.error("出错!,请联系信息部。");
  993. });
  994. },
  995. //菜单切换
  996. caidanchange(val){
  997. this.allocationArgument.assessmentSettingId='';
  998. var savejob ={};
  999. this.parentmenuarr.forEach(item => {
  1000. if(item.id==val){
  1001. savejob=item
  1002. }
  1003. });
  1004. this.allocationArgument.assessmentSettingId=savejob.id;
  1005. },
  1006. //分配api
  1007. AssessmentSettingOperationContent(){
  1008. console.log(this.allocationArgument);
  1009. this.allocationArgument.id=0
  1010. var url = "/api/PersonnelModule/AssessmentSettingOperationContent"
  1011. var that = this
  1012. this.$axios({
  1013. method: 'post',
  1014. url: url,
  1015. headers: {
  1016. Authorization: 'Bearer '
  1017. },
  1018. data:{
  1019. id:that.allocationArgument.id==""?0:that.allocationArgument.id,
  1020. createUserId:that.userId,
  1021. assessmentSettingId:that.allocationArgument.assessmentSettingId,
  1022. assessmentProportionChi:that.allocationArgument.assessmentProportionChi,
  1023. targetValue:that.allocationArgument.targetValue,
  1024. jobId:that.allocationArgument.jobId,
  1025. userId:that.allocationArgument.userId,
  1026. fixed:that.allocationArgument.fixed=='是'?1:2,
  1027. remark:that.allocationArgument.remark,
  1028. }
  1029. }).then(function (res) {
  1030. if (res.data.code == 200) {
  1031. that.allocationVisible=false;
  1032. that.$message({
  1033. type: 'success',
  1034. message: res.data.msg
  1035. });
  1036. that.GetPerformanceList();
  1037. } else {
  1038. that.allocationVisible=false;
  1039. that.$message.error(res.data.msg);
  1040. }
  1041. }).catch(function (error) {
  1042. that.$message.error("出错!,请联系信息部。");
  1043. });
  1044. },
  1045. //打开对话框
  1046. ondialog(){
  1047. this.ruleForm= {
  1048. name: '',
  1049. assessmentProportion: '',
  1050. assessmentStandard: '',
  1051. parentId: '',
  1052. parentmenu:'',
  1053. id:'',
  1054. createId: '',
  1055. remark: '',
  1056. },
  1057. this.dialogTableVisible=true;
  1058. },
  1059. //保存分数api
  1060. SaveUserAssessmen(data,date){
  1061. var url = "/api/PersonnelModule/SaveUserAssessmen"
  1062. var that = this
  1063. this.$axios({
  1064. method: 'post',
  1065. url: url,
  1066. headers: {
  1067. Authorization: 'Bearer '
  1068. },
  1069. data:{
  1070. createUserId:that.userId,
  1071. assessmenData:date,
  1072. assessmenUserId:that.value,
  1073. data:data
  1074. }
  1075. }).then(function (res) {
  1076. if (res.data.code == 200) {
  1077. that.$message({
  1078. type: 'success',
  1079. message: res.data.msg
  1080. });
  1081. that.GetPerformanceList();
  1082. } else {
  1083. that.$message.error(res.data.msg);
  1084. }
  1085. }).catch(function (error) {
  1086. that.$message.error("出错!,请联系信息部。");
  1087. });
  1088. },
  1089. //保存分数
  1090. saveclick(){
  1091. console.log(this.datetime(this.monthdate));
  1092. var itemdata=[];
  1093. for (let y = 0; y <this.tablelist.length; y++) {
  1094. for(let e=0;e<this.tablelist[y].children.length;e++){
  1095. for (let s = 0; s < this.tablelist[y].children[e].children.length; s++) {
  1096. console.log(this.tablelist[y].children[e].children[s]);
  1097. // console.log(this.isLeader);
  1098. if (this.isLeader) {
  1099. itemdata.push({
  1100. assessmentContentSettingId:this.tablelist[y].children[e].children[s].contentId,
  1101. selfAssessment:this.tablelist[y].children[e].children[s].selfAssessment,
  1102. higherUpAssessment:this.tablelist[y].children[e].children[s].higherUpAssessment,
  1103. leadersId:0,
  1104. status:this.tablelist[y].children[e].children[s].status,
  1105. })
  1106. }else{
  1107. if(this.tablelist[y].children[e].children[s].higherUpConfig!=1&&this.isLeader){
  1108. itemdata.push({
  1109. assessmentContentSettingId:this.tablelist[y].children[e].children[s].contentId,
  1110. selfAssessment:this.tablelist[y].children[e].children[s].selfAssessment,
  1111. higherUpAssessment:this.tablelist[y].children[e].children[s].higherUpAssessment,
  1112. leadersId:0,
  1113. status:this.tablelist[y].children[e].children[s].status,
  1114. })
  1115. }
  1116. }
  1117. }
  1118. }
  1119. }
  1120. this.SaveUserAssessmen(itemdata,this.datetime(this.monthdate));
  1121. },
  1122. onallocation(){
  1123. this.allocationArgument={
  1124. id:'',
  1125. Corporation:'',
  1126. Division:'',
  1127. createUserId:'',
  1128. assessmentSettingId:'',
  1129. assessmentProportionChi:'',//占比
  1130. targetValue:'',//目标值
  1131. jobId:'',//岗位id
  1132. userId:'',//员工id
  1133. fixed:'',//固定标识 (1 是固定 2 是灵活)
  1134. remark:'',//备注
  1135. }
  1136. this.allocationVisible=true
  1137. },
  1138. submitForm(formName) {
  1139. this.$refs[formName].validate((valid) => {
  1140. if (valid) {
  1141. this.AssessmentSettingOperation();
  1142. } else {
  1143. console.log('error submit!!');
  1144. return false;
  1145. }
  1146. });
  1147. },
  1148. resetForm(formName) {
  1149. this.$refs[formName].resetFields();
  1150. },
  1151. submitFormallocation(formName) {
  1152. this.$refs[formName].validate((valid) => {
  1153. if (valid) {
  1154. this.AssessmentSettingOperationContent();
  1155. } else {
  1156. console.log('error submit!!');
  1157. return false;
  1158. }
  1159. });
  1160. },
  1161. resetFormallocation(formName) {
  1162. this.$refs[formName].resetFields();
  1163. }
  1164. },
  1165. mounted(){
  1166. this.GetWageSheetBasicsDataSource();
  1167. this.getheight();
  1168. this.QueryAssessmentSettingListOffset();
  1169. },
  1170. created(){
  1171. this.monthdate=new Date();
  1172. this.userId = JSON.parse(localStorage.getItem('userinif')).userInfo.userId;
  1173. this.token = JSON.parse(localStorage.getItem('userinif')).token;
  1174. this.daraSource();
  1175. window.addEventListener('resixe',this.getheight);
  1176. }
  1177. }
  1178. </script>
  1179. <style>
  1180. .PerformanceT-all {
  1181. width: 1599px;
  1182. background-color: #fff;
  1183. padding: 10px;
  1184. box-shadow: 0 0 5px #0005;
  1185. border-radius: 10px;
  1186. min-height: 830px;
  1187. color: #555;
  1188. font-size: 12px;
  1189. }
  1190. .PerformanceT-table-box{
  1191. display: flex;
  1192. align-items: center;
  1193. border-bottom: 1px solid #ebeef5;
  1194. }
  1195. .pf-table.PerformanceT-table-box :first-child {
  1196. border-top: 1px solid #ebeef5;
  1197. }
  1198. .PerformanceT-table-box .second-box{
  1199. display: flex;
  1200. align-items: center;
  1201. }
  1202. .PerformanceT-table-box>div{
  1203. display: inline-block;
  1204. }
  1205. .PerformanceT-title{
  1206. display: flex;
  1207. }
  1208. .second-box{
  1209. margin-top: -1px;
  1210. border-top: 1px solid #ebeef5;
  1211. }
  1212. .pf-table{
  1213. border-top: 1px solid #ebeef5;
  1214. border-left: 1px solid #ebeef5;
  1215. border-right: 1px solid #ebeef5;
  1216. }
  1217. .pf-onename{
  1218. width:150px;
  1219. display: flex;
  1220. flex-direction: column;
  1221. justify-content: center;
  1222. align-items: center;
  1223. border-left: 1px solid #ebeef5;
  1224. border-right: 1px solid #ebeef5;
  1225. }
  1226. .pf-zb{
  1227. width: 50px;
  1228. display: flex;
  1229. justify-content: center;
  1230. align-items: center;
  1231. border-right: 1px solid #ebeef5;
  1232. }
  1233. .pf-twoname{
  1234. display: flex;
  1235. border-top: 1px solid #ebeef5;
  1236. margin-top: -1px;
  1237. }
  1238. .pf-twoname>div{
  1239. display: flex;
  1240. flex-direction: column;
  1241. align-items: center;
  1242. justify-content: center;
  1243. }
  1244. .PerformanceT-title{
  1245. border-left: 1px solid #ebeef5;
  1246. border-top: 1px solid #ebeef5;
  1247. }
  1248. .PerformanceT-title>div{
  1249. text-align: center;
  1250. border-right: 1px solid #ebeef5;
  1251. padding: 10px 0;
  1252. }
  1253. .PerformanceT-hade{
  1254. display: flex;
  1255. justify-content: space-between;
  1256. margin-bottom: 10px;
  1257. }
  1258. .settings-dialog .el-form-item{
  1259. width: 395px;
  1260. }
  1261. .settings-dialog .el-select,.el-input{
  1262. width: 100%;
  1263. }
  1264. .settings-form{
  1265. display: flex;
  1266. flex-wrap:wrap ;
  1267. }
  1268. .allocation-dialog .el-form-item{
  1269. width: 395px;
  1270. }
  1271. .allocation-dialog .el-select,.el-input{
  1272. width: 100%;
  1273. }
  1274. .allocation-form{
  1275. display: flex;
  1276. flex-wrap:wrap ;
  1277. }
  1278. .pf-table .el-input-number.is-without-controls .el-input__inner{
  1279. padding-left: 10px;
  1280. padding-right: 10px;
  1281. }
  1282. .deleteXM{
  1283. display: flex;
  1284. align-items:center ;
  1285. }
  1286. .deleteXM label{
  1287. width: 90px;
  1288. }
  1289. </style>