diff --git a/SVG资源/angry face.svg b/SVG资源/angry face.svg new file mode 100644 index 0000000..010006b --- /dev/null +++ b/SVG资源/angry face.svg @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + diff --git a/SVG资源/beaming face.svg b/SVG资源/beaming face.svg new file mode 100644 index 0000000..74c8037 --- /dev/null +++ b/SVG资源/beaming face.svg @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + diff --git a/SVG资源/frowning face.svg b/SVG资源/frowning face.svg new file mode 100644 index 0000000..508d98e --- /dev/null +++ b/SVG资源/frowning face.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/SVG资源/neutral face.svg b/SVG资源/neutral face.svg new file mode 100644 index 0000000..3f4153d --- /dev/null +++ b/SVG资源/neutral face.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/SVG资源/smiling face.svg b/SVG资源/smiling face.svg new file mode 100644 index 0000000..ebc4f14 --- /dev/null +++ b/SVG资源/smiling face.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/emoji评价.js b/emoji评价.js new file mode 100644 index 0000000..71577ee --- /dev/null +++ b/emoji评价.js @@ -0,0 +1,223 @@ +/* +dom_id为字符串,表示单元格元素id,必填 +fieldid为字符串,表示字段id,可把打星结果存入对应字段,必填 +fieldValue为数组,表示每颗星对应的字段值,数组第0个值为0颗星的value,第1个值为第1个星的value,必填 +noChoose为数字,表示是否允许取消选择,1表示允许,非1表示不允许,默认不允许,非必填 +text_arr为数组,表示每颗星的备注,数组第0个值为0颗星的备注,实际无作用,第1个值为第1个星的备注,默认备注为“1星、2星”,非必填 +size为数字,表示星星的大小,单位为px +justify_content为字符串,表示星星的横向布局,默认为“left”靠左,一般可选“right”和“center” +*/ +function emojiRating(dom_id, fieldid, fieldValue, noChoose, text_arr, size, justify_content) { + let sr_size = size == undefined ? 20 : size; + let sr_justify_content = justify_content == undefined ? "left" : justify_content; + let sr_noChoose = noChoose == 1 ? 1 : 0; + let sr_text_arr = []; + if (text_arr == undefined || text_arr.length != fieldValue.length) { + fieldValue.forEach((e, index) => { + sr_text_arr.push(index + "星"); + }); + } else { + sr_text_arr = text_arr; + } + //添加CSS样式 + let style = document.createElement('style'); + let css = ` + .${dom_id}_rating:not(:checked) > input { + position: absolute; + appearance: none; + } + + .${dom_id}_rating:not(:checked) > label { + float: right; + cursor: pointer; + font-size: ${sr_size}px; + fill: #6666; + } + + .${dom_id}_rating:not(:checked) > label > svg { + fill: #6666; /* Set default color for SVG */ + transition: fill 0.3s ease; /* Add a transition effect */ + } + + .${dom_id}_rating > input:checked + label:hover svg, + .${dom_id}_rating > input:checked + label:hover ~ label svg, + .${dom_id}_rating > input:checked ~ label:hover svg, + .${dom_id}_rating > input:checked ~ label:hover ~ label svg, + .${dom_id}_rating > label:hover ~ input:checked ~ label svg { + fill: #e58e09; + } + + .${dom_id}_rating:not(:checked) > label:hover svg, + .${dom_id}_rating:not(:checked) > label:hover ~ label svg { + fill: #ff9e0b; + } + + .${dom_id}_rating > input:checked ~ label > svg { + fill: #fcea2b; /* Set color for selected stars */ + } + + .${dom_id}_rating { + display: flex; + justify-content: ${sr_justify_content}; + align-items: center; + flex-direction: row-reverse; + }`; + if (style.styleSheet) { + // 针对 IE + style.styleSheet.cssText = css; + } else { + // 其他浏览器 + style.appendChild(document.createTextNode(css)); + } + document.head.appendChild(style); + //添加图表标 + $(`#${dom_id}`).append(`
`); + for (let i = fieldValue.length - 1; i > 0; i--) { + let emoji_svg; + switch (i) { + case 1: + emoji_svg = ` + + + + + + + + + + + + + + + + `; + break; + case 2: + emoji_svg = ` + + + + + + + + + + + + + + `; + break; + case 3: + emoji_svg = ` + + + + + + + + + + + + + + `; + break; + case 4: + emoji_svg = ` + + + + + + + + + + + + + + `; + break; + case 5: + emoji_svg = ` + + + + + + + + + + + + + + + + + `; + break; + default: + emoji_svg = ` + + `; + break; + } + $(`.${dom_id}_rating`).append(` + `); + } + let initial_num = WfForm.getFieldValue(fieldid); + if (initial_num !== undefined && initial_num !== "") { + for (let i = 0; i < fieldValue.length; i++) { + if (fieldValue[i] == +initial_num) { + if (i > 0) { + $(`#${dom_id}_star${i}`).attr({ checked: true }); + if (sr_noChoose == 1) { + $(`#${dom_id}_star${i}`)[0].setAttribute('data-checked', 1); + } + } + break; + } + } + } + if (sr_noChoose == 1) { + for (let i = 1; i < fieldValue.length; i++) { + $(`#${dom_id}_star${i}`).click((event) => { + if (event.target.getAttribute('data-checked') == 1) { + event.target.checked = false; + event.target.setAttribute('data-checked', 0); + WfForm.changeFieldValue(fieldid, { value: fieldValue[0] }); + } else { + fieldValue.forEach((e, index) => { + if (index > 0 && index != i) { + $(`#${dom_id}_star${index}`)[0].setAttribute('data-checked', 0); + } + }); + event.target.setAttribute('data-checked', 1); + WfForm.changeFieldValue(fieldid, { value: fieldValue[i] }); + } + }); + } + } else { + for (let i = 1; i < fieldValue.length; i++) { + $(`#${dom_id}_star${i}`).click(() => { + WfForm.changeFieldValue(fieldid, { value: fieldValue[i] }); + }); + } + } +} \ No newline at end of file